【问题标题】:How would you sanitize the street number out of a postal address using Java?您将如何使用 Java 从邮政地址中清除街道号码?
【发布时间】:2012-11-28 02:24:32
【问题描述】:

为确保数据隐私,我必须在删除门牌号后发布地址列表。

所以,例如:

1600 Amphitheatre Parkway, Mountain View, CA

需要发布为

Amphitheatre Parkway, Mountain View, CA

在 Java 中执行此操作的最佳方法是什么?这需要正则表达式吗?

【问题讨论】:

  • 你只是想用空字符串替换所有数值吗?
  • 这对于像“120 7th Street NW”这样的东西没有意义。此外,您是否仅限于美国地址,它们是否始终采用“街道、城市、州”格式?
  • 删除数字是不够的。猜猜谁住在“One Microsoft Way”。 :-)
  • 别忘了 P.O.盒子、公寓、楼层和套房号等。这些也需要删除吗?
  • 如果您有邮政编码,您也可以使用它来检索地址。这样您就不会意外发布门牌号。

标签: java regex sanitization privacy street-address


【解决方案1】:

编辑:怎么样...

addressString.replace("^\\s*[0-9]+\\s+","");

或 JavaScript...

addressString.replace(/^\s*[0-9]+\s+/,'');

我最初的建议是 (JavaScript)...

addressString.replace(/^\s*[0-9]+\s*(?=.*$)/,'');

【讨论】:

  • 注意不要在 '123 2nd Street, Nowhereville' 调用两次
  • 我确实打算每行只调用一次:D
  • 事实上/^\s*[0-9]+\s+/ 更简单,可能效果更好。无需前瞻。这也将确保“第 7 街”不会变成“第 7 街”
  • @Wrikken 我更新后的答案可以安全使用,因为它坚持后面的空格字符。
  • OP 已经提出了一个单独的问题,要求将其转换为有效的 Java 代码,但您愿意在此处修复它以供后代使用吗?应该是addressString.replace("^\\s*[0-9]+\\s*(?=.*$)", "");
【解决方案2】:

这是一个技术上难以解决的问题。但我认为这并不重要。

您说您想从地址中去除门牌号以确保数据隐私。您认为这到底是如何确保隐私的?我的意思是,它可能会给那些住在有几千户人家的街道上的人一点隐私,但在一条中等大小的街道上,它会缩小到几百人;在一条小街上可能有几个选择,在一些乡村道路上,它可能会准确地告诉你地址对应的房子。

这不是消毒。

如果您将任何其他数据与该地址相关联,问题就会变得非常复杂。

【讨论】:

  • +1 因为即使正则表达式的答案在技术上解决了这个问题,这个答案似乎更相关。
【解决方案3】:

一种可能性是使用通常会解析地址并以 XML 格式返回的 CASS 系统。然后,您可以轻松获取街道名称、城市和州,而忽略街道编号。

【讨论】:

    【解决方案4】:

    Natchy,我在一家名为 SmartyStreets 的地址验证公司工作:解析街道地址是我们的专业领域。我将加强 pkananen 和 Mark 所说的话,因为这远远超出了正则表达式的能力,而且无论如何——撇开数据隐私不谈——你目前的方法不如其他方法有效。

    USPS 授权某些地址解析器供应商使用其官方数据并返回经过认证的结果,特别是“CASS-Certified”。通常 CASS 与邮件相关联,但可以很好地扩展到您需要做的领域。有 API(用于入口点)和批处理服务(如上传列表)将验证和组件化地址。

    当一个地址被分解成组件时,很容易只使用你真正需要的部分。您还将验证该地址是否存在、完整、准确,并且可以满足您的目的。

    例如,在LiveAddress' API page(您可以将其用作您自己研究的跳板)上,您可以了解它是如何工作的,并且您可以从文档中挑选您将要使用的地址想要展示或储存。 (有趣的是!我们在该页面上的默认示例地址也是Google 在加利福尼亚州山景城的地址。)

    如果您对解析地址还有任何疑问,我很乐意亲自为您提供帮助。

    【讨论】:

      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2016-07-20
      • 2014-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多