根据国家/地区代码规范化电话号码

时间:2014-02-13 17:03:24

标签: java libphonenumber

我有一个电话号码和ISO country code相关联。例如,CA表示加拿大,美国表示美国,GB表示英国。

电话号码可能不仅包含区号和手机号码。

libphonenumber提供了一个函数,用于根据国家/地区代码确定电话号码是否有效,因此我认为应该有一种方法来规范它。

图书馆是否提供了一种方法让我将其转换为一个能够正确分隔拨号代码,区号和电话号码本身的对象?例如:给出+44 20 xxxx xxxx表格的英国电话号码,我希望它将4420xxxx xxxx

分开

我看到了一些规范化方法,但它们只是删除了连字符,圆括号和空格等字符。

1 个答案:

答案 0 :(得分:8)

libphonenumber PhoneNumberUtil格式方法似乎可以满足您的需求。

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
    PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
    e.printStackTrace();
}

// Produces "044 668 18 00"
System.out.println(phoneUtil.format(swissNumberProto, 
    PhoneNumberFormat.NATIONAL));