Intereting Posts
Как использовать OpenCV для обработки изображения, чтобы текст стал четким и четким? Post id facebook share dialog всегда возвращает null в Android Проверьте, что пользователь открыл сайт в приложении или нет. Android DatePicker Ограничение по дате Файл APK Repackage для хранения настраиваемых активов – какой инструмент построения использовать? AppCompat и EditText разные подчеркивания для разных API Android – как настроить будильник на определенную дату Стратегия загрузки асинхронных изображений ListView OnTouch работает, но OnClickListener этого не делает? XPath.evaluate производительность замедляется (абсурдно) по нескольким вызовам Получить угол обзора устройства для камеры Android Удаление заголовка панели Android Не удалось добавить окно android.view.ViewRoot$W@44da9bc0 – разрешение отклонено для этого типа окна Обнаружение, если у устройства Android есть подключение к Интернету Не удалось загрузить обновленный APK в Google Play Store

Извлечение страны кода из номера телефона

У меня есть строка вроде этого: +33123456789 (французский номер телефона). Я хочу извлечь код страны (+33), не зная страны. Например, он должен работать, если у меня есть другой телефон из другой страны. Я использую библиотеку google https://code.google.com/p/libphonenumber/ .

Если я знаю страну, это круто, я могу найти код страны:

PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); int countryCode = phoneUtil.getCountryCodeForRegion(locale.getCountry()); 

Но я не нахожу способ разобрать строку, чтобы не знать страну.

Solutions Collecting From Web of "Извлечение страны кода из номера телефона"

Хорошо, поэтому я присоединился к группе google libphonenumber ( https://groups.google.com/forum/?hl=ru&fromgroups#!forum/libphonenumber-discuss ), и я задал вопрос.

Мне не нужно указывать страну в параметре, если мой номер телефона начинается с «+». Вот пример:

 PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { // phone must begin with '+' PhoneNumber numberProto = phoneUtil.parse(phone, ""); int countryCode = numberProto.getCountryCode(); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } 

Здесь вы можете сохранить номер телефона в международном формате.

 internationalFormatPhoneNumber = phoneUtil.format(givenPhoneNumber, PhoneNumberFormat.INTERNATIONAL); 

Он возвращает номер телефона в качестве международного формата +94 71 560 4888

Так что теперь у меня есть код страны, как это

 String countryCode = internationalFormatPhoneNumber.substring(0,internationalFormatPhoneNumber.indexOf('')).replace('+', ' ').trim(); 

Надеюсь, что это поможет вам

Если строка, содержащая номер телефона, всегда будет запускаться таким образом (+33 или другой код страны), вы должны использовать регулярное выражение для разбора и получения кода страны, а затем использовать библиотеку, чтобы получить страну, связанную с номером.

Вот ответ, как найти код вызова страны без использования сторонних библиотек (как это делает настоящий разработчик):

Получить список всех доступных кодов стран, Wikipedia может помочь здесь: https://en.wikipedia.org/wiki/List_of_country_calling_codes

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

Перемещайте свое дерево по цифре, пока вы не на последней ветке – это код вашей страны.