繁体   English   中英

Google libphone号码,用于获取相同国家/地区代码的国家/地区名称

[英]Google libphone number for getting country name for the same country code

如何使用Google的libphone号码https://github.com/googlei18n/libphonenumber来查看电话号码是否是加拿大或美国的电话号码,因为它们共享相同的国家/地区代码?

例如:+ 1415-555-0123是美国,旧金山+ 1647-555-0123是加拿大,多伦多

只需提供电话号码,我就需要获取国家/地区名称。

当我尝试以下操作时,它返回“ true”,而我的期望是它应该返回false,因为电话号码不是美国号码而是加拿大号码。

 PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
 boolean isPossible = phoneUtil.isPossibleNumber("+16475550123", "US");

我意识到这是一个两步过程:

步骤1 :(首先检查是否可以输入数字)

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
boolean isPossible = phoneUtil.isPossibleNumber("+16475550123", "US");

步骤2 :(然后检查该区域是否有效)

Phonenumber.PhoneNumber number = phoneUtil.parse("+16475550123", "US");
 isValid = phoneUtil.isValidNumberForRegion(number, "US");

// isValid为false,因为647不是美国区号。

我们可以有这样的事情:

String countries[] = {"US", "CA"};
String phoneNumber = "+13101234567";

for (String c : countries) {
            boolean isValid = phoneUtil.isPossibleNumber(phoneNumber, c);

            if (isValid) {
                try {
                    Phonenumber.PhoneNumber number = phoneUtil.parse(phoneNumber, c);
                    isValid = phoneUtil.isValidNumberForRegion(number, c);
                    if(isValid) {
                       System.out.println("Country is " + c);
                    }
                }catch(Exception e) {}
            }
        }

您可能正在寻找PhoneNumberUtil.isValidNumberForRegion() 从其文档中

测试电话号码对于特定区域是否有效。 请注意,这并不能验证该数字是否在实际使用中,仅查看数字本身是无法分辨的。 如果国家/地区代码与该地区的国家/地区代码不同,则立即以false退出。 此后,将检查该区域的特定数字样式规则。 例如,这对于确定特定号码是否对加拿大有效,而不仅仅是有效的NANPA号码很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM