我该如何解析街道地址,以使它们看起来都一样?

时间:2018-07-27 14:53:33

标签: c# sql-server

好的,所以我正在编写一个接近完成的C#脚本,我只需要检查以确保街道名在缩写地址结尾方面都相同 示例:

  • 1234 Apple 街道
  • 4902肯宁顿
  • 4234房屋吸引了 Boulevard
  • ETC ....

突出显示的名称是我要缩写的值:

  • 1234苹果 ST
  • 4902肯宁顿 RD
  • 4234房子吸引了 BLVD

C#中是否有某种方法或函数可以自动执行此操作?或一些解析功能可以做到这一点?请让我知道!如果SQL存在这样的内容

4 个答案:

答案 0 :(得分:1)

请知道,这就像制作3D游戏的功能。而且不太复杂,但是资产不错。如果您走出小街,到处走走,您会发现即使在一个国家/地区进行规范化的地址也非常复杂。

您可以轻松做的是不做-移交给它。将您的地址提交给API(Google地理编码,BIngs等),然后获取它们返回的地址部分。

否则-上一次我做的是,与h3人一起半年才解决所有异常的特殊情况。

答案 1 :(得分:0)

正如汤姆汤姆(TomTom)所说,这是一个比看起来要复杂得多的问题,并且存在许多荒唐的案例。

我还建议将您的地址提交给API以进行标准化,但是正如您所知,大多数免费地址(例如Google)仅允许偶然的非商业查询。这意味着,如果您有大量需要标准化的地址,则会违反其ToS。

SmartyStreets提供了街道地址验证和标准化服务,您可以免费试用。如果您对此感到满意并且需要更多查询,则可以随时购买更多。披露:我是SmartyStreets的软件开发人员。

答案 2 :(得分:-1)

var newString = "1234 Apple Street".Replace("Street", "ST");

或者您也可以使用正则表达式模式来修改您的字符串

var newString= Regex.Replace("1234 Apple Street", "(?i)street", "ST");

答案 3 :(得分:-1)

“缩写街道名称的功能” 听起来有些太具体了,无法与.NET框架打包在一起?

您可以创建它,很简单

获取字符串 检查所需的任何选项(Boulevard,Road,Street) String.contains ,或者可以使用 LINQ函数 Enumerable.Any  并相应地对待

但就像@TomTom指出的那样,您将面临文化问题