Как добавить ведущий ноль к национальному номеру? - PullRequest
0 голосов
/ 05 сентября 2018

Я использую предопределенные форматы телефонов для форматирования национального телефонного номера, но вернул национальный значащий номер. без префикса 0. например:

US Phone #

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)

Форматирует телефонный номер в указанном формате, используя правила форматирования, определенные клиентом. Обратите внимание, что если номер телефона имеет страну звонка нулевой код или неправильный код вызова страны, мы не можем отрабатывать такие вещи, как, должен ли быть национальный префикс применяется, или как форматировать расширения, поэтому мы возвращаем национальный значительное число без форматирования. Параметры: число - номер телефона для форматирования номера формата - формат телефона число должно быть отформатировано в userDefinedFormats - правила форматирования указанные клиентами Возвраты: отформатированный номер телефона

Демо: https://libphonenumber.appspot.com/

Так что моя текущая проблема заключается в том, чтобы найти способ добавить этот ведущий ноль в элегантный способ.

Есть ли способ отформатировать номер с использованием предопределенных форматов телефона и, тем не менее, иметь ожидаемый лидирующий ноль?

1 Ответ

0 голосов
/ 05 сентября 2018

Является ли ваше намерение абсолютно опустить символ тире в конце числа? В противном случае, я взялся за это (никогда не использовал этот пакет) для того, чтобы отобразить израильский номер в национальном стиле:

    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
...