我正在考虑使用CASS - 经过认证的地址验证服务来更正用户提供的街道地址。 (具体来说,我正在查看SmartyStreets的LiveAddress。)但是,USPS规定正确的地址必须全部大写,因此CASS服务几乎统一地返回地址。但是,当在该地址邮寄给客户时,最好使用更人性化的传统外壳。
当然,问题是如何实现这一目标。我知道没有一个完美的解决方案,不涉及一个完整的全国范围的正确大写的街道和城市名称数据库。但是,一组可通过的启发式方法可能已经足够好了,因为我们可能会将更正后的地址反馈给用户,最终将其留给他们。
在几分钟的思考之后我能够提出的一系列问题:
SW FIRST ST
应该是SW First St
,而不是Sw First St
。MCDOUGLE ST
应该是McDougle St
,而不是Mcdougle St
。MACDOUGLE ST
应该是Macdougle St
而不是MacDougle St
,因为Macoroni Rd
通常不应该是MacOroni Rd
。1ST ST
应该是1st St
,而不是1St St
。VAN
变为van
,但VON
可能会变为von
。是否有任何现有的图书馆至少可以让我入门?地址是复杂而变化无常的东西,如果我不需要的话,我宁愿不回家酿造整个东西。我正在使用C#,但我愿意使用其他语言移植代码。
除此之外,是否有人对街道和/或城市名称的共同资本化例外有一个不错的参考?
答案 0 :(得分:2)
很高兴看到您正在使用LiveAddress服务来促进地址验证和标准化。您可能需要注意的一件事是,在将套管规则应用于标准化地址的过程中,这将有助于您:
我们最近推出了一个新的REST+JSON端点,它返回地址的标准化形式以及地址的各个组成部分。因此,将套管规则应用于“street_name”和“city_name”值非常容易,这些值的返回与街道后缀和前后方向无关。
除了Stack Overflow(我们不断监控)上的问题之外,欢迎您联系SmartyStreets支持以获得有关此问题的其他帮助。我可能还应该提到我是SmartyStreets的创始人。最后,我们正在努力恢复正确的地址,但我还没有任何类型的发布时间框架。
答案 1 :(得分:1)
不是图书馆,但根据您的要求,您可以使用Google Maps API来解决问题。