2016-12-04 6 views
0

У меня есть эта граница, которую я получил из kml, я смог выкопать xml и захватить только граничные точки. Мне нужно преобразовать точки из этого:Преобразование граничных точек из .kml с использованием регулярного выражения

-92.25968002689014,30.7180061776264,0 -92.25976564548085,30.71751889774971,0 -92.25992462712097,30.71670626485147,0 -92.26006418327708,30.71604891951008,0 -92.26018466460856,30.71558863525373,0 -92.26037301574165,30.71498469610939,0 - 92.26054805030229,30.71444051930294,0 -92.26065861561004,30.71411636559884,0

Для этого:

ПОЛИГОН ((- 92,25968002689014 +30,7180061776264, -92.25976564548085,30.71751889774971, -92,25992462712097 30,71670626485147, -92.26006418327708,30.71604891951008, -92,26018466460856 +30,71558863525373, -92,26037301574165, 30.71498469610939, -92.26054805030229 30.71444051930294, -92.26065861561004,30.71411636559884))

Регулярное выражение шаблон я использую: «[0-9 .-] *» Мой план состоял в том, чтобы использовать регулярное выражение замены заменить запятые с последующим любым количеством цифры, периоды или минусовые знаки, за которыми следует одно или несколько пробелов с некоторым символом, похожим на двоеточие. Затем замените все запятые пробелами и затем замените все двоеточия запятыми. Но по какой-то причине я не могу заставить его работать. Любой совет будет очень признателен.

+1

ли на самом деле не нужно даже регулярное выражение. Обрежьте последнее число, присоединитесь к строке и добавьте/добавьте нужную часть. –

+0

Спасибо за совет:] – user3338734

ответ

0

Вы можете попробовать это:

([-\d.]+),([-\d.]+),([-\d.]+)\s+([-\d.]+),([-\d.]+),([-\d.]+)\s*; 

Образец C# код:

String polygon(String input) 
{ 
    string pattern = @"([-\d.]+),([-\d.]+),([-\d.]+)\s+([-\d.]+),([-\d.]+),([-\d.]+)\s*"; 
    RegexOptions options = RegexOptions.Singleline | RegexOptions.Multiline; 
    String finalString = "POLYGON(("; 

    int count = 0; 
    foreach (Match m in Regex.Matches(input, pattern, options)) 
    { 
     if (count > 0) 
      finalString += ","; 
     finalString += m.Groups[1] + " " + m.Groups[2] + ", " + m.Groups[4] + "," + m.Groups[5]; 
     count = 1; 
    } 
    finalString += "))"; 
    return finalString;  
} 

выход:

POLYGON((-92.25968002689014 30.7180061776264, -92.25976564548085,30.71751889774971,-92.25992462712097 30.71670626485147, 
-92.26006418327708,30.71604891951008,-92.26018466460856 30.71558863525373, -92.26037301574165,30.71498469610939,-92.260 
54805030229 30.71444051930294, -92.26065861561004,30.71411636559884))