使用c#,地址分割,只显示郊区名称

本文关键字:郊区 显示 分割 地址 使用 | 更新日期: 2023-09-27 18:13:16

此代码仅显示邮政编码(2477和2024)

输入:

地址:
肯尼迪先生,G
牛津大道115号1单元,
ALSTONVILLE 2477

john Ed先生
老南头RD 100号
华臣湾2024

我efford

:

string suburbs = address.Split(' ').Last().ToString();

谁能告诉我如何分割(使用c#),只有郊区的名称。

期望输出:
ALSTONVILLE
沃森湾

使用c#,地址分割,只显示郊区名称

假设您的郊区总是在第三行/最后一行,邮政编码总是只有数字-这应该工作

string res = string.Concat( address.Split(''n').Last().Where( x => !char.IsDigit(x))).Trim();
输入:

john Ed先生
老南头RD 100号
沃森湾2024

结果:

华臣湾

我的代码看起来不是很简短和专业,所以可以随意优化,但它应该返回您期望的输出。如果地址的结构一直是相同的,它应该工作,也与城市名称中的数字。

    var firstsplit = address.Split(''n').Last();
    var secondsplit = firstsplit.Split(' ');
    var thridsplit = secondsplit.Where(x => x != secondsplit.Last());
    string erg = "";
    foreach (var split in thridsplit)
    {
        erg += split + " ";
    }
    erg = erg.TrimEnd(' ');

逻辑有点混乱,但它工作得很好:

string suburb = string.Join(" ", address.Split(''n').Last()
    .Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries)
    .Reverse().Skip(1)  //to remove zip code
    .Reverse().ToArray());   //to reset the order

获取最后一行,将其分割并跳过最后一项,然后连接数组并返回。

我不得不使用Reverse,因为Skip跳过了第一项。

我假设输入是从文本文件中获取的。我在文本框里也放了同样的东西以防你的程序这样做。然后从地址之间的空白行拆分地址,找到最后一行并删除数字(如果有的话)。

string inp = File.ReadAllText("inp.txt");
string result1 = "";
TxtWebAdd.Text = inp;
var found = TxtWebAdd.Text.Split(new string[] { "'r'n'r'n" }, StringSplitOptions.RemoveEmptyEntries);
foreach(string fn in found)
{
    result1 = result1 + Regex.Replace(fn.Split(new string[] { "'r'n" }, StringSplitOptions.RemoveEmptyEntries).Last().ToString(), @"['d-]", string.Empty) + "'r'n";
}

请试试:

 var address = "Mr Johan Ed 100'nOld South Head RD 'nVishal Watson Bay 2024";
 Regex reg = new Regex(@"'b([a-zA-Z's]*)'b");
 var last = address.Split(''n').Last();
 var address = reg.Match(last).ToString();