我需要拉出城市并说出如下数据:
8 mi SSW of Newtown, PA
10 mi SE of Milwaukee, WI
29 Miles E of Orlando, FL
截至目前,我正在将每个字符串分别传递给方法
string statusLocation = "8 mi SSW of Newtown, PA"
等。一次一个。
为城市州搜索此字符串的最佳方法是什么?我正在考虑使用正则表达式或子字符串以及逗号的索引等。我不太确定如果状态是3个字符或者城市中有逗号,我会遇到什么样的问题,因为这也是加拿大的数据,我不确定它们是如何缩写的。
答案 0 :(得分:2)
你可以做一个
string str = "8 mi SSW of Newtown, PA";
var parts = str.Split(new[] {' '}, 5);
部件看起来像这样:{“8”,“mi”,“SSW”,“of”,“Newtown,PA”},你可以轻松地使用部件[4]访问“Newtown,PA”。
答案 1 :(得分:0)
您可以使用此正则表达式:
of (.*), ([a-zA-Z]{2})$
这将捕获of
之后的所有内容,然后是一个逗号后跟一个空格然后是两个字母,然后是一行结尾。例如:
var regex = new Regex("of (.*), ([a-zA-Z]{2})$");
var strings = new[]
{
"8 mi SSW of Newtown, PA",
"10 mi SE of Milwaukee, WI",
"29 Miles E of Orlando, FL"
};
foreach (var str in strings)
{
var match = regex.Match(str);
var city = match.Groups[1];
var state = match.Groups[2];
Console.Out.WriteLine("state = {0}", state);
Console.Out.WriteLine("city = {0}", city);
}
这当然假设与数据有一定的一致性,比如州是两个字母。