首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从谷歌定制libPhoneNumber

从谷歌定制libPhoneNumber
EN

Stack Overflow用户
提问于 2019-11-24 20:20:10
回答 1查看 422关注 0票数 1

我在使用谷歌的libphonenumber。我想定制这个库的一些数据,你克隆了这个项目,然后在resources/PhoneNumberMetadata.xml中修改。然后,我把与埃及有关的移动电话号码从10个改为15个。

代码语言:javascript
复制
<territory id="EG" countryCode="20" internationalPrefix="00" nationalPrefix="0"
               mobileNumberPortableRegion="true">
      <availableFormats>
        <numberFormat pattern="(\d)(\d{7,8})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>[23]</leadingDigits>
          <format>$1 $2</format>
        </numberFormat>
        <numberFormat pattern="(\d{2})(\d{6,7})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>
            1[35]|
            [4-6]|
            8[2468]|
            9[235-7]
          </leadingDigits>
          <format>$1 $2</format>
        </numberFormat>
        <numberFormat pattern="(\d{3})(\d{3})(\d{4})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>[189]</leadingDigits>
          <format>$1 $2 $3</format>
        </numberFormat>
      </availableFormats>
      <generalDesc>
        <nationalNumberPattern>
          [189]\d{8,9}|
          [24-6]\d{8}|
          [135]\d{7}
        </nationalNumberPattern>
      </generalDesc>
      <!-- Subscriber numbers starting with 5 are also permitted for the area codes 040, with 5, 6
           and 7 for the area code 050, with 5 and 7 for 082, with 6 for 084, with 7 for 086 and
           092 and with 5 and 6 for 96. -->
      <fixedLine>
        <possibleLengths national="8,9" localOnly="6,7"/>
        <exampleNumber>234567890</exampleNumber>
        <nationalNumberPattern>
          (?:
            15\d|
            57[23]
          )\d{5,6}|
          (?:
            13[23]|
            (?:
              2[2-4]|
              3
            )\d|
            4(?:
              0[2-5]|
              [578][23]|
              64
            )|
            5(?:
              0[2-7]|
              5\d
            )|
            6[24-689]3|
            8(?:
              2[2-57]|
              4[26]|
              6[237]|
              8[2-4]
            )|
            9(?:
              2[27]|
              3[24]|
              52|
              6[2356]|
              7[2-4]
            )
          )\d{6}
        </nationalNumberPattern>
      </fixedLine>
      <mobile>
        <possibleLengths national="15"/>
        <exampleNumber>100123456712345</exampleNumber>
        <nationalNumberPattern>1[0-25]\d{13}</nationalNumberPattern>
      </mobile>
      <tollFree>
        <possibleLengths national="10"/>
        <exampleNumber>8001234567</exampleNumber>
        <nationalNumberPattern>800\d{7}</nationalNumberPattern>
      </tollFree>
      <premiumRate>
        <possibleLengths national="10"/>
        <exampleNumber>9001234567</exampleNumber>
        <nationalNumberPattern>900\d{7}</nationalNumberPattern>
      </premiumRate>
    </territory>

然后我构建了这个项目,然后我在我的项目中的Jar依赖于New,但仍然看到移动号码是10个数字,而不是15个,这是我编写的代码

代码语言:javascript
复制
public static void main(String argc[])
    {
         PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
            try {
                Phonenumber.PhoneNumber egyNumber = phoneUtil.parse("152234567891234", "EG");
                boolean isValidNumber = phoneUtil.isValidNumber(egyNumber);
                System.out.println(isValidNumber);
            } catch (NumberParseException e) {
                e.printStackTrace();
            }
    }

此代码返回FALSE,但应该返回TRUE

备注:图书馆为每个国家使用二进制文件,但我认为它是编码的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-25 10:04:41

我发现Google提供了一种自定义与任何国家相关的元数据的方法,通过一些步骤您可以在这里找到它们。

https://github.com/google/libphonenumber/blob/master/making-metadata-changes.md

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59021993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档