我正在拨打一项服务,让我回到这样的纬度和经度:"Lat:42.747058 Long:-84.551892"
。
如何使用正则表达式捕获纬度值? 此代码不起作用。
string GPSLocation = "Lat:42.747058 Long:-84.551892";
MatchCollection matches = Regex.Matches(GPSLocation, "Lat:() ");
if (matches.Count > 0)
{
string latValue = matches[0].Value;
return Decimal.Parse(latValue);
}
return 0M;
答案 0 :(得分:4)
试试这个正则表达式:
(?<=Lat:)(-?\d+\.\d+)
在C#中:
Regex.Matches(GPSLocation, "(?<=Lat:)(-?\\d+\\.\\d+)")[0].Value;
它只是将十进制数与可选的-
- 符号匹配。
答案 1 :(得分:1)
我不会像这样简单地使用正则表达式
怎么样
string GPSLocation = "Lat:42.747058 Long:-84.551892";
var values = GPSLocation.split(" ");
if (values.Count > 0)
{
string lat = values[0].split(":")[1];
return Decimal.Parse(lat);
}
return 0M;
答案 2 :(得分:1)
希望你不介意我使用非正则表达式解决方案
string GPSLocation = "Lat:42.747058 Long:-84.551892";
string lat = GPSLocation.Substring(4, GPSLocation.IndexOf("Long") - 5);
string lon = GPSLocation.Substring(GPSLocation.IndexOf("Long") + 5);
答案 3 :(得分:0)
"Lat:()"
将匹配“Lat:”,然后捕获一个空字符串。在括号内,您需要添加要捕获的字符,如下所示:"Lat:([-.0-9]*)"
。
答案 4 :(得分:0)
这应该有效:
Lat:([\d.-]+) Long:([\d.-]+)
答案 5 :(得分:0)
尝试:
string GPSLocation = "Lat:42.747058 Long:-84.551892";
string latRegex = "Lat:-?([1-8]?[1-9]|[1-9]?0)\\.{1}\\d{1,6}"
MatchCollection matches = Regex.Matches(GPSLocation, latRegex);
if (matches.Count > 0)
{
...
正则表达式从RegexLib.com
无耻地被盗确保加倍反斜杠
答案 6 :(得分:0)
使用此字符串:string GPSLocation = "Lat:42.747058 Long:-84.551892";
您可以先使用拆分(':'),然后使用拆分(''):string s=GPSLocation.Split(':')[1].Split(' ')[0]
然后使用s
Lat。
答案 7 :(得分:0)
使用可以一次又一次编译和使用的正则表达式对象。
Decimal res;
string GPSLocation = "Lat:42.747058 Long:-84.551892";
Regex regexObj = new Regex(@"(?<=Lat:)-?(\b[0-9]+(?:\.[0-9]+)?\b)");
if (Decimal.TryParse(regexObj.Match(GPSLocation).Groups[1].Value, out res)){
return res;
}
return 0M;