2013-03-07 53 views
-7

我有一些點的座標如下圖所示:我如何在C#解析CSV

-123.118069008,49.2761419674,0 -123.116802056,49.2752350159,0 -123.115385004,49.2743520328,0 -123.114912944,49.2738039982,... ........... -123.118069008,49.2761419674,0

能否請您讓我知道我該如何使用C#創建這樣的事情:

new google.maps.LatLng(-123.118069008,49.2761419674), 
new google.maps.LatLng(-123.116802056,49.2752350159), 
..... 
new google.maps.LatLng(-123.118069008,49.2761419674)]; 

由於你可以看到,我需要:

  1. 添加「新google.maps.LatLng(),」
  2. 刪除0從-123.118069008,49.2761419674,0
  3. 解析它,直到最後一行其終止與;

感謝

+7

你嘗試過什麼嗎? – Saggio 2013-03-07 21:51:42

+0

正則表達式將是您最簡單的解決方案。 [這個問題有你一半。] [1] [1]:http://stackoverflow.com/questions/3518504/regular-expression-for-matching-latitude-longitude-coordinates – DigitalNomad 2013-03-07 21:57:24

回答

1

這裏做到這一點,我知道的最簡單的方法...

 var txt = "-123.118069008,49.2761419674,0 -123.116802056,49.2752350159,0 -123.115385004,49.2743520328,0"; 
     var output = new StringBuilder(); 
     foreach (var group in txt.Split(' ')) 
     { 
      var parts = group.Split(','); 
      var lat = double.Parse(parts[0]); 
      var lng = double.Parse(parts[1]); 
      if (output.Length > 0) 
       output.AppendLine(","); 
      output.Append("new google.maps.LatLng("+lat+","+lng+")"); 
     } 
     MessageBox.Show("["+output+"]"); 

結果是...

[新google.maps.LatLng(-123.118069008,49.2761419674),

新google.maps.LatLng(-123.116802056,49.2752350159)

新google.maps.LatLng(-123.115385004,49.2743520328)]

+0

謝謝Gabe,這正是我一直在尋找的 – Suffii 2013-03-07 22:10:16

0

未經測試,沒有編譯,但這應該讓你開始

var items = data.Split(','); 
for(int i = 0; i < items.Length; i = i + 2) 
{ 
    var lat = int.Parse(items[i].Replace("0-","-")); 
    var lng = int.Parse(items[i+1]); 
} 

你會想要做數組邊界檢查等,希望這有助於依舊。

+0

謝謝內特,我要測試這個 – Suffii 2013-03-07 21:58:03