1

我们正在开发将地址数据导入 CRM 系统的 ac# 应用程序。CSV 文件包含一个地址列,例如“Somethingstreet 34”。然而,我们的 CRM对街道名称和门牌号码使用两个不同的字段。当然,在给定的示例中,这没有问题。但是我们的荷兰寻址系统可能有点痛苦。

现实世界的例子:

  • Somestreet 88a(其中“Somestreet”是街道名称,88a 是门牌号码)
  • 2e van Blankenburgstraat 123a(其中“2e van Blankenburgstraat”是街道名称,“123a”是门牌号)
  • 2e van Blankenburgstraat 123-a(其中“2e van Blankenburgstraat”是街道名称,“123-a”是门牌号)
  • 2e van Blankenburgstraat 123 a(其中“2e van Blankenburgstraat”是街道名称,“123 a”是门牌号)

现在我正在寻找一个很好的函数(RegEx 或其他东西),它将这些地址线正确地分成两个字段。有没有一种干净的方法可以做到这一点?


编辑:

我对我们的寻址系统做了一些进一步的调查,似乎(感谢政府)上述例子甚至不是“最差”的例子。

更多(这些是真实的街道和数字):

  • Rivium 1e Straat 53/ET6(其中“Rivium 1e Straat”是街道,“53/ET6”是门牌号)
  • Plein 1940-1945 34(其中“Plein 1940-1945”是街道,“34”是门牌号)
  • Apollo 11-Laan 11(其中“Apollo 11-Laan”是街道,“11”(第二个)是门牌号)
  • Charta 77 Vaart 159 3H(其中“Charta 77 Vaart”是街道名称,“159 3H”是门牌号)
  • Charta 77 Vaart 44/2(其中“Charta 77 Vaart”是街道名称,“44/2”是门牌号)
4

4 回答 4

1

数据正确性的最佳解决方案是将现有数据库与具有为您执行此操作的功能的已知地址 api 进行比较。否则,您只是给出了最好的猜测,并且一些(如果不是全部)数据应该手动审查。

于 2009-06-29T18:04:06.247 回答
0

我做了什么,但我怀疑它是最高效的解决方案是反转地址,然后获取第一部分,直到你找到一个数字并将它们全部取走。即.*\d+反向地址上的正则表达式。当街道包含数字时,这可以解决您的问题。

于 2009-06-29T17:46:03.483 回答
0

你能做一些你在空格上分割的事情,然后检查一些内部字符串的第一个字符是否是整数?

 char[] splits = new char[1];
 splits[0] = ' ';
 string[] split = addressLine.split(splits);
 int splitLoc = -1, i;
 for (i =1; i < split.Length; i++){//start at 1 to avoid the first '2e' streets
     int theFirstDigit = -1;
     try{
        theFirstDigit = int.Parse(split[i].Substring(0,1));
     }catch {
        //ignore; parse fails with an exception
     }
     if (theFirstDigit != -1){
         splitLoc = i;
         break;
     }
 }
 if (splitLoc < 0) return; //busted
 string field1, field2;
 for (i = 0; i < splitLoc; i++){
     field1+= split[i] + " ";
 }

 for (i = splitLoc; i < split.Length; i++){
     field2+= split[i] + " ";
 }

取决于您所说的“干净”是什么意思,但如果所有地址都可以按照您指定的方式形成,它看起来确实可行。

于 2009-06-29T17:46:40.287 回答
0

有人可以通过多种不同的方式输入这些数据。我经常把我的地址写成:

富街 123 号公寓#3

即街道名称两端的房屋和公寓号码

如果这是我的问题,我会编写一个正则表达式来处理“简单”的并标记复杂的以供人工审查。

您可以从人口普查局找到美国的街道名称列表,但它隐藏在一个怪物数据文件中

于 2009-06-29T18:25:54.137 回答