从谷歌自定义libPhoneNumber



我正在使用谷歌的libphonenumber。我想自定义这个库的一些数据 U 克隆了项目,然后在resources/PhoneNumberMetadata.xml中修改。 然后我将与埃及相关的手机号码从 10 更改为 15 号码。

<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>
(?:
15d|
57[23]
)d{5,6}|
(?:
13[23]|
(?:
2[2-4]|
3
)d|
4(?:
0[2-5]|
[578][23]|
64
)|
5(?:
0[2-7]|
5d
)|
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>800d{7}</nationalNumberPattern>
</tollFree>
<premiumRate>
<possibleLengths national="10"/>
<exampleNumber>9001234567</exampleNumber>
<nationalNumberPattern>900d{7}</nationalNumberPattern>
</premiumRate>
</territory>

然后我构建项目,然后我在我的项目中使用 Jar 来依赖新 Jar,但仍然看到手机号码是 10 个数字而不是 15 那是我写的代码

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

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

我发现谷歌提供了一种自定义与任何国家/地区相关的元数据的方法 通过一些步骤,您可以在此处找到它们

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

最新更新