使用c#,地址分割,只显示郊区名称
本文关键字:郊区 显示 分割 地址 使用 | 更新日期: 2023-09-27 18:13:16
此代码仅显示邮政编码(2477和2024)
输入:地址:
肯尼迪先生,G
牛津大道115号1单元,
ALSTONVILLE 2477
john Ed先生
老南头RD 100号
华臣湾2024
:
string suburbs = address.Split(' ').Last().ToString();
谁能告诉我如何分割(使用c#),只有郊区的名称。
期望输出:
ALSTONVILLE
沃森湾
假设您的郊区总是在第三行/最后一行,邮政编码总是只有数字-这应该工作
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();