У меня есть база данных с миллионами телефонных номеров со свободным для всех форматированием. Т.е. пользовательский интерфейс не применяет никаких ограничений и пользователи набирают все, что захотят.
Я ищу Java API, который может приложить все усилия, чтобы преобразовать их в согласованный формат. В идеале API будет использовать значение свободного текста и код страны и выдавать действительный международный номер телефона или выдавать исключение.
Например, номер телефона в системе может выглядеть следующим образом:
(555) 478-1123
555-478-1123
555.478.1123
5554781123
Учитывая страну США, API будет производить значение "+1 (555) 478-1123" для всех этих. Точный формат не имеет значения, если он согласован.
В системе также есть номера без кодов областей, таких как "478-1123". В этом случае я ожидал бы исключение NoAreaCodeException или что-то подобное.
Также могут быть такие данные, как "abc", которые также должны генерировать исключения.
Конечно, есть множество вариаций приведенных мной примеров, а также огромное количество международных телефонных номеров, которые имеют довольно сложные правила валидации. Вот почему я бы не стал отказываться от своих собственных.
Кто-нибудь видел такой API?