为了确保数据隐私,我必须在删除门牌号后发布地址列表。
因此,例如:
1600 Amphitheatre Parkway, Mountain View, CA
需要发布为
Amphitheatre Parkway, Mountain View, CA
在 Java 中执行此操作的最佳方法是什么?这需要正则表达式吗?
为了确保数据隐私,我必须在删除门牌号后发布地址列表。
因此,例如:
1600 Amphitheatre Parkway, Mountain View, CA
需要发布为
Amphitheatre Parkway, Mountain View, CA
在 Java 中执行此操作的最佳方法是什么?这需要正则表达式吗?
编辑:怎么样...
addressString.replace("^\\s*[0-9]+\\s+","");
或 JavaScript...
addressString.replace(/^\s*[0-9]+\s+/,'');
我最初的建议是(JavaScript)...
addressString.replace(/^\s*[0-9]+\s*(?=.*$)/,'');
这是一个技术上难以解决的问题。但我认为这并不重要。
你说你想从地址中去掉门牌号以确保数据隐私。您认为这到底是如何确保隐私的?我的意思是,它可能会给那些住在有几千户人家的街道上的人一点隐私,但在一条中等大小的街道上,它会缩小到几百人;在一条小街上可能有几个选择,在一些乡村道路上,它可能会准确地告诉你地址对应的房子。
这不是消毒。
如果您将任何其他数据与该地址相关联,那么问题就会变得非常复杂。
一种可能性是使用通常会解析地址并以 XML 格式返回的 CASS 系统。然后,您可以轻松获取街道名称、城市和州,而忽略街道编号。
Natchy,我在一家名为SmartyStreets的地址验证公司工作:解析街道地址是我们的专业领域。我将加强 pkananen 和 Mark 所说的话,因为这远远超出了正则表达式的能力,而且无论如何——撇开数据隐私不谈——你目前的方法不如其他方法有效。
USPS 授权某些地址解析器供应商使用他们的官方数据并返回经过认证的结果,特别是“CASS-Certified”。通常 CASS 与邮件相关联,但很好地扩展到您需要做的领域。有 API(用于入口点的东西)和批处理服务(如上传列表)将验证和组件化地址。
当一个地址被分解成组件时,很容易只使用你真正需要的部分。您还将验证该地址是否存在、是否完整、准确,并且是否符合您的目的。
例如,在LiveAddress 的 API 页面(您可以将其用作您自己研究的跳板)上,您可以看到它是如何工作的,并且从文档中,您可以选择您想要的地址展示或储存。(有趣的是!我们在该页面上的默认示例地址也是Google 在加利福尼亚州山景城的地址。)
如果您对解析地址还有任何疑问,我很乐意亲自为您提供帮助。