如何使用formatByPattern(libphonenumber.jar)?

时间:2016-03-09 08:07:43

标签: java libphonenumber

我正在使用Google的libphonenumber库来验证和格式化Java应用程序中的电话号码。

以下是我使用的代码:

String phoneNumberE164Format = "3365440901";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber phoneNumberProto = phoneUtil.parse(phoneNumberE164Format, "US");
phoneNumberE164Format = phoneUtil.formatByPattern(phoneNumberProto, 
                           PhoneNumberFormat.INTERNATIONAL, ******);

方法签名是这样的:

public java.lang.String formatByPattern(PhoneNumber number,
                                        PhoneNumberUtil.PhoneNumberFormat numberFormat,
                                        java.util.List<NumberFormat> userDefinedFormats);

现在我不明白应该为第三个参数输入什么。

我希望格式如下所示:

+1.410.218.9999 OR
+1-210-125-9999

1 个答案:

答案 0 :(得分:1)

上面的Milind Gokhale的评论让我找到了解决方案。

以下代码将任何有效的电话号码格式化为此问题中指定的格式:

NumberFormat newNumFormat = new NumberFormat();
newNumFormat.pattern = "(\\d{3})(\\d{3})(\\d{4})";
newNumFormat.format = "$1-$2-$3";

List<NumberFormat> newNumberFormats = new ArrayList<NumberFormat>();
newNumberFormats.add(newNumFormat);

String formatted = phoneUtil.format(phoneNumberProto, PhoneNumberFormat.RFC3966).substring(4);