2014-02-13 4 views
2

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

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

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

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

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

+0

за эти годы - я отказался от этой конкретной идеи. теперь я просто храню целое число - выясняя, что хорошего - это разделение ... – Randy

ответ

7

Похоже, что формат 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)); 
+0

+1. второстепенные моменты для компиляции: у вас должна быть точка с запятой в конце первой строки, и это e.printStackTrace(). Вам также понадобится System.out в пределах области переменной для ее компиляции – bphilipnyc