我有数以千计的地址数据,我想解析它们,以便我可以将街道与国家/地区的邮政编码分开等等。
有没有办法在Java中做到这一点?
答案 0 :(得分:3)
我知道谷歌开源他们的international address and phone number parsing library。我建议你查看他们的演示文稿here和javadoc。
答案 1 :(得分:0)
如果您只是以字母形式来自世界各地的地址,并且您稍后想要在那里发信件,那么最好将它们留在这种格式中(可能是在分割国家之后,通常是最后一次)。
各个国家/地区的内部格式差异很大(即使只比较德国,英国,俄罗斯),之后拥有一个包含各个组件的数据库需要个别(特定国家/地区)逻辑将它们重新组合在一起。
(我曾经有一个应用程序,它接受了各个字段的输入,然后从那时创建了一个地址列表(通过“德语方式”),并且总是收到英国用户的抱怨,我将他们的地址格式化了错误的顺序。所以在以后的版本中,我只是创建了一个多行的“地址”输入字段,然后我输出而没有任何变化。)
答案 2 :(得分:0)
如果您不想添加第三方依赖项,则可以使用正则表达式。
请参阅:http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html 和http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html
用法基本上是:
private static final Pattern PAT_NAME = Pattern.compile("my\\sregex");
...
Matcher matcher = PAT_NAME.matcher("my address");
答案 3 :(得分:0)
这里有一个较旧的库:http://jgeocoder.sourceforge.net/parser.html,但在大多数情况下都可以使用。 如果您想使用API,那么我过去曾经使用过SmartyStreets,它们运行得很好(https://smartystreets.com/)。