我前段时间发现了这个,但我现在找不到它。
我想在C#中解析格式为"44°59'59.93\" N "
的GPS坐标,以获取每个值的数组。
例如:
degree:44
minutes:59
seconds:59.93
direction:"N"
我认为解决方案必须像正则表达式或类似“{0}°{1}”{2} \“{3}”的模式,但我不知道用于将此GPS坐标拆分为什么函数一个数组。
答案 0 :(得分:4)
根据以下正则表达式拆分输入。
string[] lines = Regex.Split(value, @"[°'""] *");
然后从索引0获得度数,从索引1获得分数,从索引2获得秒,从索引3获取方向。
答案 1 :(得分:1)
您可以使用捕获组来获取您要询问的部分。
string value = @"44°59'59.93"" N";
var match = Regex.Match(value, @"(\d+)°(\d+)'([\d\.]+"")\s*([NSEW])");
if (m.Success) {
//note that these are all strings and will need to be parsed into ints/doubles
var degrees = m.Groups[0];
var minutes = m.Groups[1];
var seconds = m.Groups[2];
var direction = m.Groups[3];
}
打破这个局面:
(
.. )
表示"组" - 匹配的一部分,可以称为连续的块或子字符串。 (与{0}
占位符相反)\d
将匹配一个数字。+
表示"一个或多个",因此\d+
表示"一个或多个数字" [
.. ]
表示括号中任何内容的选择(对于简单的情况)\s
表示"空白" *
表示"零或更多"。因此,\s*
表示"这里可能有一些空格,请继续使用#34; 如果有空格,您可能需要在其中添加一些额外的\s*
来抓住空格。