此代码仅显示邮政编码(2477和2024)
输入:
地址:
肯尼迪先生,G
1单元115牛津大道,
阿尔斯通维尔2477
约翰·艾德先生
100 Old South Head RD
华生湾2024年
我的efford:
string suburbs = address.Split(' ').Last().ToString();
有人可以告诉我如何拆分(使用C#)只有郊区名称。
预期输出:
ALSTONVILLE
华生湾
答案 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();