Extraer el código del país del número de móvil

Tengo una lista de números de móvil con código de país como "919638095998" número. Me he referido el libphonenumber google ejemplo también pero en que primero tenemos que pasar el país código de 2 dígitos, que no sé inicialmente. Entonces, ¿cómo puedo saber que el número es de qué país?

También he conseguido una solución como extraer manualmente el código uno por un dígito del número móvil y después comparar con el código del país. Pero es una tarea larga y también me dará un mal desempeño. ¿Alguien puede sugerir una solución adecuada?

Hay una lista de todos los números de teléfono disponibles para los códigos de país en Wikipedia. Es aquí

http://en.wikipedia.org/wiki/List_of_country_calling_codes

Me gustaría crear dos hashmaps. Uno con todos los códigos de cuatro dígitos y otro que contiene los dos y tres dígitos.

Hashmap fourdigitcodes; //check if first digit is 7 if(firstdigit==7) //country definitely russia else if country code begins with 1. Check the first four digits are in the hashmap with four digit codes and return the value if no value is found then answer is certainly usa. otherwise String country=""; HashMap<String,String> ccode = new HashMap<String,String>(); ccode.put("353","Ireland");//List all country codes ccode.put("49","Germany"); String value = ccode.get("49");//See if I have a value for the first 2 digits if(value != null){ country = value; //If I found a country for the first two digits we are done as the first two digits of the country code consisting of two digits cannot be in a country code with 3 }else{ the country is certainly 3 digit. return the first three digits by entering the first 3 digits as the key of the hashmap countaining the first three digits. } 

En resumen. Si el primer dígito es 7 ruso. Si es 1 compruebe en el hashmap de cuatro códigos del dígito para los primeros cuatro números si encuentra un código de cuatro dígitos devuelva el país correspondiente. Si no la respuesta es los EEUU compruebe de otra manera dos primeros dígitos en el hashmap que contiene los 2 o 3 dígitos. Si se encuentra dos, entonces devolver la respuesta de otro es sin duda un código de tres dígitos y devolver el país correspondiente de la hash.

Será tedioso hacer el hashmap pero creo que es una solución eficiente.

Si no es tarde

Solo buscando esto encontré una biblioteca de Java y Javascript mantenida por Google;)

Consulte el repo: https://github.com/googlei18n/libphonenumber

También hay una demo.

¡Buena suerte!

Si bien el uso de estructuras estáticas de datos puede considerarse una mala práctica, los códigos de país no cambian mucho, por lo que creo que la creación de una lista de ellos como un árbol y analizar el número con este árbol debería ser una solución fácil de implementar.

También puede poner la lista de códigos de país en un archivo externo para que pueda actualizarse fácilmente sin cambiar el código de la aplicación.

Wikipedia tiene la lista de códigos de país aquí .

Si el código de país es sólo 2 dígitos no. Divida el número de teléfono en 2 con la primera subcadena con 2 dígitos y la segunda con los 10 dígitos restantes.

Si echa un vistazo a su propio enlace, puede encontrar la clase CountryCodeToRegionCodeMap . Contiene una lista de probablemente todos los códigos de país. Usted podría utilizar que para crear su propio código para determinar el código del país tiene una longitud de 1, 2 o 3. No puedo creer que este es el único lugar en Internet donde se puede encontrar una lista de este tipo.

Apenas haciendo una comprobación rápida de wikipedia , pensé que usted necesita hacer un algo de la búsqueda de la cadena del máximo de la parte delantera. En un conflicto, que no parece venir, pero incase, puede comprobar el número de dígitos (NSN) para encontrar el código del país

Una manera optimizada sería crear cubos. A partir de la lista de códigos de país . La longitud máxima del código de país es 4, (a menos que desee entrar en la precisión de las provincias en cuyo caso será 7, marque la zona 6). Y luego comprobar la existencia de 4, 3, 2, 1. Esto reducirá significativamente su tiempo de algoritmo de búsqueda. Pero sí el tamaño de los datos será mayor. Un caso clásico de intercambio de espacio de tiempo

Código de país en el móvil algún tiempo empezar con como + (más) 44, 0044, 44 y como se ha dicho anteriormente algunos países pueden tener código de longitud variable. Así que la mejor solución posible sería comenzar desde atrás, a partir de ahora sabemos longitud de número de móvil es de 10. una vez que tome los 10 dígitos, entonces se puede analizar código de país en consecuencia.

Libphonenumber hace eso por ti. Todo lo que tienes que hacer es añadir el signo + antes de tu número de teléfono y omitir el código del país al analizar el número de teléfono.

 String numberStr = "+919638095998"; PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { Phonenumber.PhoneNumber numberProto = phoneUtil.parse(numberStr, ""); System.out.println("Country code: " + numberProto.getCountryCode()); //This prints "Country code: 91" } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } 
  • Android Studio no funciona con HoloEverywhere y ActionBarSherlock
  • El nombre del paquete de refactorización rompe toda la aplicación
  • InetAddress.getByName en Android
  • ¿Cómo puedo aumentar la variable entera final?
  • métodos en foreach y para bucles en java
  • Android: La forma más eficiente de pasar algunos bytes de sólo lectura a C ++ nativo
  • ¿Cómo hacer una devolución de llamada después de que la vista esté completamente renderizada?
  • Problema de desacoplamiento de parcelables
  • ListView dinámico en la aplicación para Android
  • Establezca BaseActivity con un constructor personalizado para suministrar datos de la clase secundaria
  • Leer EPUB utilizando sólo Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.