1

我需要提取城市并列出如下所示的数据字符串:

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 个字符或一个城市中有一个逗号会遇到什么样的问题,因为这也是加拿大数据和我不确定他们如何缩写东西。

4

2 回答 2

2

你可以做一个

string str = "8 mi SSW of Newtown, PA";
var parts = str.Split(new[] {' '}, 5);

零件看起来像这样:{“8”,“mi”,“SSW”,“of”,“Newtown,PA”},您可以使用零件[4]轻松访问“Newtown,PA”。

于 2012-05-09T19:03:14.377 回答
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);
}

这当然假设与数据有一定的一致性,比如状态是两个字母。

于 2012-05-09T18:59:28.027 回答