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

问题描述 投票:2回答:1

我使用预定义的电话格式来格式化国内电话号码,但返回了全国重要号码。没有前缀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い

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

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

java formatting internationalization phone-number libphonenumber
1个回答
0
投票

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

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();
    }
© www.soinside.com 2019 - 2024. All rights reserved.