我需要将电话号码(可以是移动或地面线路)拆分为:
示例:
+923211234567
将92 32x 1234567
(移动)
+92992123456
将92 992 123456
(固定电话)
假设我有一个包含所有国家/地区拨号代码,区号,移动国家代码,移动网络代码的数据库...
问题是国家/地区拨号代码可以是1,2或3位数。例如:
1
代表美国,92
代表巴基斯坦,<{1}}代表加纳
此外,区域和移动网络代码可以是2位或3位数。有什么想法吗?
答案 0 :(得分:6)
您可以使用Phone number parser库 可以找到演示页面here。
答案 1 :(得分:0)
在分割之前是否已知该号码是手机号码还是地面号码?如果没有,那么即使数字的长度也不同。
答案 2 :(得分:0)
try {
// phone must begin with '+'
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
Phonenumber.PhoneNumber numberProto = phoneUtil.parse("your number", "");
int countryCode = numberProto.getCountryCode();
long nationalNumber = numberProto.getNationalNumber();
Log.i("code", "code " + countryCode);
Log.i("code", "national number " + nationalNumber);
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}