2013-05-25 7 views
3

Hello У меня есть номер телефона в нем E164 format: +212640588740 и я хочу его конвертировать в international format: +212 640-588740. Существует эта библиотека http://code.google.com/p/libphonenumber/, которая делает это преобразование очень хорошо, но для этого требуется номер телефона и код страны, который я не могу предоставить, потому что я читаю телефон для преобразования из БД.Javascript преобразование номера телефона из E164 в международный формат

В основном я хочу сценарий или библиотеку, которая принимает в качестве аргументов E164 и превращает его в это международный стандартный формат, как следующее:

+212640588740 => +212 640-588740 
+33336578668 => +33 3 36 57 86 68 
+17877491410 => +1 787-749-1410 

Любые идеи приветствуются, спасибо заранее.

+2

почему ты меченый это JQuery? вы используете jquery и не против решения, которое использует jquery? – tgkprog

+3

Как вы можете преобразовать номер телефона в международный формат, если вы не знаете код страны? Любые решения без использования кода страны приведут к некоторой проблеме, ранее или позже. В принципе, вы должны добавить поле в БД, чтобы указать для каждого номера код страны. –

+1

Вы не можете извлечь код страны из своего номера звонков? вам понадобится какая-то база данных со всеми кодами страны, а затем вы берете первые номера своего номера телефона, соответствующие одному из кодов в базе данных. – basilikum

ответ

2

Если весь ваш вход отформатирован E164, вы можете использовать com.google.i18n.phonenumbers.PhoneNumberUtil.parse() метод для преобразования строки в PhoneNumber инстанции, в свою очередь, можно использовать com.google.i18n.phonenumbers.PhoneNumberUtil.format(), чтобы преобразовать его в строку, отформатированный INTERNATIONAL.

Вам не нужно знать код страны (или разобрать его) заранее, см Params документацию parse() метода:

defaultRegion - ... Если номер гарантированно начать с '+', за которым следует код вызова страны, тогда может быть задано значение "ZZ" или null.

Вот краткий пример:

PhoneNumber number = com.google.i18n.phonenumbers.PhoneNumberUtil.parse("+12781112222", null); 
String result = com.google.i18n.phonenumbers.PhoneNumberUtil.format(number, com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL); 

Для использования см документации:

com.google.i18n.phonenumbers.PhoneNumberUtil.parse() com.google.i18n.phonenumbers.PhoneNumberUtil.format()

Смежные вопросы