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


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

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

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

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

4 61

4 ответа:

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

мне не нужно устанавливать страну в параметре, если мой номер телефона начинается с "+". Вот пример :

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 или другой код страны), вы должны использовать регулярное выражение для анализа и получения кода страны, а затем использовать библиотеку для получения страны, связанной с номером.

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

получите список всех существующих кодов стран Википедия может помочь здесь: https://en.wikipedia.org/wiki/List_of_country_calling_codes

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

пересечь дерево цифра за цифрой, пока вы не окажетесь на последней ветке - это ваш код страны.