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

У меня есть строка вроде этого: +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

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

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