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

本文关键字:提取 取文本 字符串 数据 | 更新日期: 2023-09-27 18:33:51

我需要拉出城市并说明如下所示的数据字符串:

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

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

你可以做一个

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

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

您可以使用

以下正则表达式:

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

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