【问题标题】:Parsing Phone Numbers to their parts将电话号码解析为其部分
【发布时间】:2012-09-14 10:53:55
【问题描述】:

我知道 Google libphonenumber 解析库的 C# 端口: http://code.google.com/p/libphonenumber/

我需要的是获取一个电话号码字符串并将其分解为相应的部分,国家代码、区号、前缀、数字和分机。

这个库可以用来做那个吗?如果是这样,有人可以在 C# 中发布一个简单的测试来做到这一点吗?我在文档中没有看到如何做到这一点。

顺便说一句,它们可以是国内的或国际的。

【问题讨论】:

    标签: c# .net formatting


    【解决方案1】:

    libphonenumber 库将解析一个号码并验证它是否与国内和国际号码的已知模式匹配。它会告诉您国家代码以及任何给定号码在国内或国际上的正确拨号模式。

    它不会将其解析为除此之外的组成部分。无区号、前缀、号码、分机解析。

    它是开源的,所以如果您需要这样做,它可能是一个很好的起点,但我相信这将是一项艰巨的任务。

    【讨论】:

    • 那么,你知道有哪个图书馆可以做到这一点吗?
    • 你见过 CodeProject 上 2008 年的库吗?我也不确定它是否这样做。 codeproject.com/KB/cs/PhoneNumberStruct.aspx?display=Print
    • @MB34,不错的库,但是它将数字分成几部分,它没有标记部分国家代码、前缀、区号等。图书馆所做的一件非常巧妙的事情是正确处理字母,喜欢1-800-MY-PHONE
    【解决方案2】:

    Patrick Mezard 已将库移植到 C#:

    https://bitbucket.org/pmezard/libphonenumber-csharp/wiki/Home

    使用方法可以看官网:

    http://code.google.com/p/libphonenumber/

    Java 代码可以直接翻译成 C#。例如:

    Java

    String swissNumberStr = "044 668 18 00"
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
    try {
      PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
    } catch (NumberParseException e) {
      System.err.println("NumberParseException was thrown: " + e.toString());
    }
    

    C#

    String swissNumberStr = "044 668 18 00";
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.GetInstance();
    try
    {
        PhoneNumber swissNumberProto = phoneUtil.Parse(swissNumberStr, "CH");
        Console.WriteLine(swissNumberProto.CountryCode);
    }
    catch (NumberParseException e)
    {
        Console.WriteLine("NumberParseException was thrown: " + e.ToString());
    }
    

    祝你好运。

    更新:

    更多示例:http://code.google.com/p/libphonenumber/source/browse/#svn/trunk/java/libphonenumber/test/com/google/i18n/phonenumbers

    如果你没有看到你需要什么,那么我想你可以自己实现它。

    【讨论】:

    • 我没有看到解析出的部分。如果我传入国家代码“CH”,为什么我需要使用swissNumberProto.CountryCode?
    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2021-11-10
    • 2012-07-24
    相关资源
    最近更新 更多