如何将前导零添加到国家号码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将前导零添加到国家号码?相关的知识,希望对你有一定的参考价值。

我使用预定义的电话格式来格式化国内电话号码,但返回了全国重要号码。没有前缀0.例如:

美国电话#

PhoneNumber = +16175551212   (national number is 6175551212)
pf = new PhoneFormat("(XXX) XX XXXXX", dialingCodeUS);
PhoneNumberUtil.formatByPattern(PhoneNumber, PhoneNumberFormat.NATIONAL, pf)
result: (617) 55 51212      GOOD!

IL(以色列)电话号码#

PhoneNumber = +972545551212   (national number is 0545551212)
pf = new PhoneFormat("XXX-XXX XXXX", dialingCodeUS);
PhoneNumberUtil.formatByPattern(PhoneNumber, PhoneNumberFormat.NATIONAL, pf)

result: 545551212        BAD!

Expected it to be: 054-555 1212

我不能使用其他方法只是因为此方法(formatByPattern)接受预定义的PhoneFormats

来自javadoc:PhoneNumberUtil.formatByPattern

public String formatByPattern(Phonenumber.PhoneNumber number,
                     PhoneNumberUtil.PhoneNumberFormat numberFormat,
                     List<Phonemetadata.NumberFormat> userDefinedFormats)

使用客户端定义的格式规则格式化指定格式的电话号码。请注意,如果电话号码的国家/地区呼叫代码为零,或者国家/地区呼叫代码无效,我们无法确定是否应该应用国家/地区前缀,或者如何格式化分机号码,因此我们会返回国家/地区的重要号码。没有应用格式。参数:number - 要格式化的电话号码numberFormat - 电话号码格式化为userDefinedFormats的格式 - 客户指定的格式规则返回:格式化的电话号码

但是:ぁzxswい

所以我目前的问题是找到一种方法来优雅地添加这个前导零。

有没有一种方法可以使用预定义的手机格式格式化数字,但是如预期的那样具有前导零?

答案

你的意图绝对是在号码末尾省略短划线符号吗?否则,我对它的看法(从未使用过这个包)是为了以国家方式显示以色列号码:

https://libphonenumber.appspot.com/

这会产生:

    PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();

    String pn ="+972545551212";

    Phonenumber.PhoneNumber number = null;
    try {
        number = phoneUtil.parse(pn, "IL");
        System.out.println(phoneUtil.format(number, PhoneNumberUtil.PhoneNumberFormat.NATIONAL));
    } catch (NumberParseException e) {
        e.printStackTrace();
    }

以上是关于如何将前导零添加到国家号码?的主要内容,如果未能解决你的问题,请参考以下文章

结帐后如何将摩洛哥国家代码添加到 wp woocommerce 中的电话号码? [关闭]

如何将前导数字标识符(不一定为零)添加到 r 中的字符串

Python将前导零添加到时间字段[重复]

如何在 Excel 中将前导零添加到固定的字母数字长度? [复制]

将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?

将前导零添加到 Spark 数据框中的列 [重复]