2013-03-07 18 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