【发布时间】:2021-05-27 21:49:51
【问题描述】:
我必须从一个字符串中拆分门牌号和街道。
现在我有一个可以像这样拆分地址的工作程序:
- 1 测试街
- 1 条测试街
- 1a 测试街
- 测试街 1 号
- Teststreet 1 a
- 测试街 1a
string street = Teststreet 1;
string houseNr = "";
for (int k = 0; k < street.Length; k++)
{
(Char.IsNumber(street[k]) == true)
{
houseNr += street[k].ToString();
}
if (k + 1 < street.Length && k + 2 == street.Length - 1)
{
if (!string.IsNullOrEmpty(houseNr) && street[k + 1] == ' ')
{
houseNr +=' ' + street[k + 2].ToString();
}
}
if (k + 2 < street.Length && !string.IsNullOrEmpty(houseNr) && Char.IsLetter(street[k + 1]) && street[k+2]==' ' && Char.IsNumber(street[k])
|| k + 1 < street.Length && k + 2 == street.Length - 1 && !string.IsNullOrEmpty(houseNr) && Char.IsLetter(street[k + 1]) && Char.IsNumber(street[k])
|| k + 1 < street.Length && k + 2 == street.Length - 1 && !string.IsNullOrEmpty(houseNr) && street[k + 1] == ' ' && Char.IsNumber(street[k])
|| k + 1 == street.Length - 1 && !string.IsNullOrEmpty(houseNr) && Char.IsLetter(street[k + 1]) && Char.IsNumber(street[k]))
{
houseNr += street[k + 1].ToString();
}
if (k + 3 < street.Length)
{
if (street[k + 1] == ' ' && street[k + 3] == ' ')
{
houseNr += ' ' + street[k + 2].ToString();
}
}
}
street = street.Replace(houseNr.Trim(), "").Trim();
但这不能像这样拆分地址:
- Teststreet 1 a-f
- Teststreet 1a-f
- 1 a-f Teststreet
- 1a-f 测试街
有谁知道这是如何工作的?
感谢您的帮助。 :)
【问题讨论】:
-
你也有剩下的地址吗?您可以使用 Google 或其他服务进行地址查找并获取地址的各个部分。否则我怀疑你会找到一个可靠的算法