Форматирование номера телефона с использованием libphonenumber (от Google) PhoneNumberUtil:formatByPattern возвращается без 0
Я использую предопределенные форматы телефонов для форматирования национального телефонного номера, но вернул национальный значащий номер. без префикса с 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) принимает предопределенные Phone Formats
Есть ли способ отформатировать число, используя предопределенные форматы телефона и все же иметь лидирующий ноль, как и ожидалось?
от javadoc: PhoneNumberUtil.formatByPattern
public String formatByPattern(Phonenumber.PhoneNumber number,
PhoneNumberUtil.PhoneNumberFormat numberFormat,
List<Phonemetadata.NumberFormat> userDefinedFormats)
Форматирует номер телефона в указанном формате, используя определенные клиентом правила форматирования. Обратите внимание, что если номер телефона имеет код страны, равный нулю, или недопустимый код вызова страны, мы не можем решить, например, должен ли применяться национальный префикс или как форматировать расширения, поэтому мы возвращаем национальное значимое число с форматирование не применяется. Параметры: number - номер телефона, который будет отформатирован. NumberFormat - формат, в котором телефонный номер должен быть отформатирован в userDefinedFormats - правила форматирования, заданные клиентами. Возвращает: отформатированный номер телефона.