Я слышал много хорошего из того, что кажется потрясающей библиотекой, но я попал в деликатную ситуацию.
Это первый проект, в котором я когда-либо работал, где я должен хранить телефонные номерав базе данных.
Я немного прочитал о формате E.164 и намерен сохранить все номера телефонов, использующие этот формат, в моей базе данных.
проблема, с которой я сталкиваюсь, это источник данных.У меня нет контроля над источником данных.Все, что я знаю, это то, что я получаю несколько телефонных номеров, и их формат не соответствует.У некоторых есть международное расширение, у некоторых нет.У некоторых есть круглые скобки, дефисы, ведущие 0 и т. Д., У некоторых нет.
Как я могу извлечь телефонные номера из указанного источника, отформатировать их в E.164, чтобы я мог их безопасно хранить?
Я пытался использовать метод PhoneNumberUtil#parse()
без указания кода страны, поскольку у меня нет доступа к этой информации.
Посмотрите на следующий пример:
System.out.printLn("Number -> " + phoneNumberUtil.parse("00336555233634", null).toString())
Тип ошибки: INVALID_COUNTRY_CODE.Регион по умолчанию отсутствует или недействителен.
В моем примере это номер французского мобильного телефона.Два начальных 0
работают, если вы набираете номер из-за пределов Франции, я полагаю.
Но библиотека не может понять это, поскольку она теряет код страны. Означает ли это, что не существует способа понять, откуда поступает этот конкретный номер телефона?
Документация кажется ясной:
public PhoneNumber parse(CharSequence numberToParse, String defaultRegion)
@ param defaultRegion регион, от которого мы ожидаем, что число будет.Это используется только если * анализируемый номер записан не в международном формате.Код страны для номера *
в этом случае будет сохранен как код региона по умолчанию.Если номер * гарантированно начинается с символа «+», за которым следует код вызова страны, то можно указать RegionCode.ZZ * или ноль.
Итак, если добавить +33
System.out.printLn("Number -> " + phoneNumberUtil.parse("+336555233634", null).toString())
Тогда, естественно, результат будет:
Номер -> Код страны: 33 Национальный номер: 336555233634
Что я должен / могу делать, есликонечный пользователь предоставляет моему приложению номера телефонов, которые не начинаются с +
?Я не могу поверить, что я один такой в этой ситуации.
Спасибо за помощь!