C#/.NET 2.0

我需要在两个单独的值中解析一个包含街道名称和房屋编号的字符串。

in: "Streetname 1a"         out:  "streetname"  "1a"
    "Street name 1a"              "street name" "1a"
    "Street name 1 a"             "street name" "1 a"

我的第一个选择是在我找到 ""字符的地方拆分字符串,但这不适用于第二种情况。
result[0] = trimmedInput.Substring(0, splitPosition).Trim();
result[1] = trimmedInput.Substring(splitPosition + 1).Trim();

做这个的最好方式是什么?我可以使用正则表达式吗?

谢谢

最佳答案

^(.+)\s(\S+)$ 应该可以解决问题

编辑:这将起作用,因为门牌号中不能有空格。否则这个问题不能以编程方式解决,因为程序永远不会知道字符串标记的语义。

住所地址困惑且不一致。我处理过地址数据,老实说,如果你没有标准化形式的数据,你基本上就完蛋了。
^(.+)\s(\d+(\s*[^\d\s]+)*)$将涵盖更多情况,但如果我看到过这种情况,则这种模式就是一 jar 蠕虫。

10-06 14:11
查看更多