Extrae el código del país del número de teléfono

Tengo una cadena como esta: +33123456789 (número de teléfono francés). Quiero extraer el código de país (+33) sin conocer el país. Por ejemplo, debería funcionar si tengo otro teléfono de otro país. Uso la biblioteca de google https://code.google.com/p/libphonenumber/ .

Si conozco el país, es genial, puedo encontrar el código de país:

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

pero no encuentro una manera de analizar una cadena sin conocer el país.

De acuerdo, me uní al grupo de google de libphonenumber ( https://groups.google.com/forum/?hl=en&fromgroups#!forum/libphonenumber-discuss ) y le hice una pregunta.

No necesito configurar el país en el parámetro si mi número de teléfono comienza con “+”. Aquí hay un ejemplo :

 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()); } 

Aquí puede guardar el número de teléfono como número de teléfono internacional formateado

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

devuelve el número de teléfono como formato internacional +94 71 560 4888

así que ahora tengo el código de país como este

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

Espero que esto te ayudará

Si la cadena que contiene el número de teléfono siempre comenzará de esta manera (+33 u otro código de país), debe usar expresiones regulares para analizar y obtener el código de país y luego usar la biblioteca para obtener el país asociado al número.

Aquí hay una respuesta sobre cómo encontrar el código de llamada del país sin utilizar bibliotecas de terceros (como lo hace el desarrollador real):

Obtenga una lista de todos los códigos de país disponibles, Wikipedia puede ayudar aquí: https://en.wikipedia.org/wiki/List_of_country_calling_codes

Analizar datos en una estructura de árbol donde cada dígito es una twig.

Recorre tu árbol dígito a dígito hasta que estés en la última twig, ese es el código de tu país.