Я использую предопределенные форматы телефонов для форматирования национального телефонного номера, но вернул национальный значащий номер. без префикса 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/