使用C#,地址拆分并只显示郊区名称

时间:2015-09-17 05:52:39

标签: c#

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

输入:

地址:
肯尼迪先生,G 1单元115牛津大道,
阿尔斯通维尔2477

约翰·艾德先生 100 Old South Head RD
华生湾2024年

我的efford:

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

有人可以告诉我如何拆分(使用C#)只有郊区名称。

预期输出:
ALSTONVILLE
华生湾

5 个答案:

答案 0 :(得分:0)

假设你的郊区总是在第3行/最后一行而且邮政编码总是只有数字 - 这应该有效

tail -f nohup.out |
awk -F '[-:]' '/denied/ { next } { print "dig -x " $7 " &" }' |
sh -x

<强>输入:

约翰·艾德先生 100 Old South Head RD
沃森湾2024年

结果:

沃森湾

答案 1 :(得分:0)

我的代码看起来不够短且专业,所以请随意优化,但它应该返回您的预期输出。如果地址的结构是相同的,它应该起作用,也可以使用城市名称中的数字。

    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(' ');

答案 2 :(得分:0)

逻辑有点乱,但它运行正常:

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会跳过第一项。

答案 3 :(得分:0)

我假设输入来自文本文件。我再次在文本框中添加相同的内容,以防您的程序这样做。比从地址之间的空行划分地址并找到最后一行并删除数字(如果有的话)。

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

答案 4 :(得分:0)

请试试这个:

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