当前位置: 首页 > 知识库问答 >
问题:

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

古起运
2023-03-14

我使用预定义的电话格式来格式化一个国家的电话号码,但返回了国家的重要号码。

美国电话#

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:phonenumberrutil。formatByPattern

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

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

演示:https://libphonenumber.appspot.com/

所以我现在的问题是找到一种方法,以一种优雅的方式添加这个前导零。

有没有一种方法可以使用预先定义的电话格式来设置号码的格式,并且还可以像预期的那样使用前导零?

共有1个答案

张永嘉
2023-03-14

您是否绝对打算在数字末尾省略破折号符号?否则,我的想法(从未使用过此软件包)是为了以全国性的方式显示以色列的数字:

    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();
    }

这就产生了:

054-555-1212
 类似资料:
  • 问题内容: 我有一个字段是,保持日期值,我从转换到。 有些记录有八个字符,有些记录有七个字符。我想通过将前导零添加到具有7的前导零来使它们具有相同的长度。 8个字符的示例:12162003 7个字符的示例:5072004(需要前导零) 查询: 问题答案: 可以在更多情况下使用的功能是REPLICATE。它将一个X值的次数连接到一个字符串。 这将花费您的生日的长度,将其减去8,然后在前面放置多个前导

  • 需要向列值(varchar)添加前导零,并在同一个表中更新它。例如:431 as 000431,5431 as 005431,64531 as 064531,基本上我需要用零替换数据,使其为6位。这是sybase ase。 谢啦

  • 问题内容: 有没有更好的方法来获得此结果?如果num的位数比位数多,则此函数将失败,并且我认为它应该在库中的某个位置(例如Integer.toString(x,“%3d”)等) 问题答案: tring.format(http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html#syntax) 在你的情况下,它将是: 0 - to

  • 问题内容: 您可以使用该函数显示以零开头的整数吗? 输入示例: 所需的输出: 我知道和基于的格式(例如)都可以实现这一点。但是,我希望使用一种解决方案,以保持我的代码干净且一致(我还使用datetime属性格式化字符串),并扩展我对Format Specification Mini- Language的了解 。 问题答案: “{0:0>3}”.format(1) ‘001’ >>> “{0:0>3

  • 有没有更好的方法得到这个结果?如果num的位数比digits多,并且我觉得它应该在库的某个地方(像integer.toString(x,“%3d”)之类的),则该函数将失败

  • 问题内容: 我已创建此脚本来以dd / mm / yyyy的格式提前10天计算日期: 通过将这些规则添加到脚本中,我需要使日期显示在日和月部分的前导零。我似乎无法正常工作。 和 如果有人可以告诉我将这些内容插入脚本的位置,我将非常感激。 问题答案: 编辑: 为了解释,给我们字符串的最后两个字符。因此,无论如何,我们都可以添加日期或月份,并只要求输入最后两个,因为它们始终是我们想要的两个。 因此,如