【问题标题】:extracting postal code from addresses从地址中提取邮政编码
【发布时间】:2015-01-10 03:44:16
【问题描述】:

我正在寻找 C# 中从地址中提取邮政编码信息的解决方案。

以下国家的邮政编码

Canada,US,Germany,UK,Turkey,France,Pakistan,India,Italy.

地址可以是这样的

188 pleasant street, new minas, Nova Scotia b2p 6r6, Canada.

或 109 A, block 3, DHA, Karachi 75600, Pakistan。

我想要什么:我想提取与城市或国家名称相邻的任何字母数字。但是很难为其创建正则表达式

【问题讨论】:

  • 如果您显示到目前为止的代码、输入是什么、您期望的输出是什么以及出了什么问题,人们会更容易帮助您。
  • 与论坛网站不同,我们不使用“谢谢”、“任何帮助表示赞赏”或Stack Overflow 上的签名。请参阅“Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?.
  • 这听起来很有价值。在我看来,有人可能已经写了这个,然后卖掉了。他们甚至可能有技术支持。当有人已经做得比你做得更好时,你为什么还要自己做呢?
  • @salniro 是的。我有想法。我想提取与城市或国家名称相邻的任何字母数字。但是很难为其创建正则表达式
  • 这篇文章可能对你有所帮助stackoverflow.com/questions/1335293/…

标签: c# .net postal-code


【解决方案1】:

这是一个相当开放的任务。您必须在其中遵循某些特定格式。因为如果地址中有两个数字字符串会发生什么(例如街道是数字的情况)。所以有两种可能:

  • 地址始终采用特定格式,您知道实际格式
  • zip 始终具有给定的长度

在这两种情况下,正则表达式都会引导您找到解决方案。 - 对于第一个示例,假设邮政编码按给定顺序排列(假设在原始示例中为 '6r6'),您可以使用以下正则表达式模式:“(\S+)\, ?\w+$” - 对于第二种情况,假设邮政编码是 5 位以上的数字,位于第一个 ',' 之后,那么可以使用以下模式来提取它:“(,.*)+(\d{5 })”。第二组将是比赛中的邮政编码。

这是您可以使用的代码: 公共静态字符串GetSingleMatch(字符串地址,字符串模式,int group = 0) { return new Regex(pattern, RegexOptions.IgnoreCase).Match(address).Groups[group].Value; }

“group”可选参数表示将包含邮政编码的正则表达式组。

【讨论】:

    【解决方案2】:

    我认为您假设地址中的一般规则是合理的,即国家/地区是最后一个,城市或州在其之前,因此邮政编码可以放在城市或州和国家之间,正如您在示例中所说的“,”是用作分隔符,所以可以如下:

        private string GetPostCode(string address )
        {
            string result = string.Empty;
    
            string[] list = address.Split(',');
            list.Reverse();
            foreach (var item in list)
            {
                // if item contains numeric postcode 
                Regex re = new Regex(@"\d+");
                Match m = re.Match(item);
                result = m.Value;
                if (!string.IsNullOrEmpty(result))
                    break;
            }
    
            return result;
        }
    

    希望对你有所帮助。

    【讨论】:

    • 这不是答案。您可能应该告诉正则表达式模式或其他内容。
    • @KaushikKishore :代码已更新。但我仍然不写确切的代码,我只是想给出一个建议。感谢您的评论。
    猜你喜欢
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多