Нормализация номера телефона с учетом кода страны

У меня есть номер телефона и связанный с ним код страны ISO с этим. Например, CA для Канады, США для США, GB для Великобритании.

Номер телефона может содержать не только код города и номер вашего телефона.

libphonenumber предоставляет функции для определения допустимости телефонного номера с учетом кода страны, поэтому я решил, что должен быть способ его нормализовать.

Предоставляет ли библиотека способ преобразовать это в объект, который будет правильно разделять телефонные коды, коды городов и сам номер телефона? например: учитывая номер телефона в Великобритании в форме +44 20 xxxx xxxx, я хочу, чтобы он отделял 44 от 20 и xxxx xxxx

Я вижу некоторые методы нормализации, но они просто удаляют такие символы, как дефис, круглые скобки и пробелы.


person MxLDevs    schedule 13.02.2014    source источник
comment
с годами я отказался от этой конкретной идеи. теперь я просто сохраняю целое число - прикидывая, что хорошего в разделении ...   -  person Randy    schedule 13.02.2014


Ответы (1)


Похоже, что метод формата libphonenumber PhoneNumberUtil будет делать то, что вы хотите.

String swissNumberStr = "044 668 18 00";
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
    PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
    e.printStackTrace();
}

// Produces "044 668 18 00"
System.out.println(phoneUtil.format(swissNumberProto, 
    PhoneNumberFormat.NATIONAL));
person Gilbert Le Blanc    schedule 13.02.2014
comment
+1. второстепенные моменты для компиляции: у вас должна быть точка с запятой в конце первой строки, и это e.printStackTrace (). Вам также понадобится System.out в рамках переменной для компиляции - person vphilipnyc; 30.04.2015