将电话号码(移动电话或固定电话)分成国家代码,区号和号码

时间:2011-04-20 07:21:32

标签: java parsing

我需要将电话号码(可以是移动地面线路)拆分为:

  • 国家/地区拨号代码
  • 区域代码
  • 电话电话号码

示例:

  

+923211234567 92 32x 1234567 (移动)
   +92992123456 92 992 123456 (固定电话)

假设我有一个包含所有国家/地区拨号代码,区号,移动国家代码,移动网络代码的数据库...

问题是国家/地区拨号代码可以是1,2或3位数。例如:

  

1代表美国92代表巴基斯坦,<{1}}代表加纳

此外,区域移动网络代码可以是2位或3位数。有什么想法吗?

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());
}