如何从这个数据字符串中提取文本

时间:2012-05-09 18:55:15

标签: c# regex

我需要拉出城市并说出如下数据:

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

2 个答案:

答案 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);
}

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