我有以下字符串:
+53.581N -113.587W 4.0 Km W of Edmonton, AB
在C#中,有没有办法将这个字符串分解成经度、纬度和城市州,并丢弃中间部分?
所以基本上我想要3个字符串:
Long
Latt
Location.
这种情况下,多种形式的该字符串是否可行?它们具有相同的格式,但数据显然是不同的。
谢谢
我有以下字符串:
+53.581N -113.587W 4.0 Km W of Edmonton, AB
Long
Latt
Location.
这种情况下,多种形式的该字符串是否可行?它们具有相同的格式,但数据显然是不同的。
谢谢
string input = @"+53.581N -113.587W 4.0 Km W of Edmonton, AB";
Match match = Regex.Match(input, @"^(?<latitude>[+\-]\d+\.\d+[NS])\s+(?<longitude>[+\-]\d+\.\d+[EW])\s+\d+\.\d+\s+Km\s+[NSEW]\s+of\s+(?<city>.*?),\s*(?<state>.*)$");
if (match.Success) {
string lattitude = match.Groups["lattitude"].value;
string longitude = match.Groups["longitude"].value;
string city = match.Groups["city"].value;
string state = match.Groups["state"].Value;
}
就像所有编程语言一样,用强大的超级棒的正则表达式是可能的。
如果你不熟悉正则表达式,我建议你学习它们。它们真的很棒。真的。
这里有一个 .NET正则表达式入门教程:
http://www.radsoftware.com.au/articles/regexlearnsyntax.aspx
var input = "+53.581N -113.587W 4.0 Km W of Edmonton, AB";
var splitArray = input.Split(new char[]{' '},3);
您可以使用正则表达式来捕获这些部分。请参见http://www.c-sharpcorner.com/uploadfile/prasad_1/regexppsd12062005021717am/regexppsd.aspx。
一个应该有效的模式是以下内容(考虑您提供的一个示例):
^([+-]\d+\.\d+\w) ([+-]\d+\.\d+\w) (.*?)$