解决Java中的Parser问题

时间:2011-02-15 13:26:04

标签: java parsing text-parsing

我有数以千计的地址数据,我想解析它们,以便我可以将街道与国家/地区的邮政编码分开等等。

有没有办法在Java中做到这一点?

4 个答案:

答案 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.htmlhttp://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/)。