[英]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.