2

我正在使用 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
4

1 回答 1

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);
于 2016-03-09T11:25:17.610 回答