2010-04-26 17 views
25

Qué expresión usando Java regulares podría ser utilizado para filtrar guiones '-' y abrir cerrar paréntesis de una cadena que representa números de teléfono ...Quitar el tablero de un número de teléfono

de manera que (234) 887-9999 debe dar 2348879999 y de manera similar 234-887-9999 debe dar 2348879999.

Gracias,

Respuesta

57
phoneNumber.replaceAll("[\\s\\-()]", ""); 

La expresión regular define una clase de caracteres que consiste en cualquier carácter de espacio en blanco (\s, que se escapó como \\s porque estamos pasando en un String), un guion (se escapó porque un guion significa algo especial en el contexto de las clases de caracteres) y paréntesis.

Ver String.replaceAll(String, String).

EDITAR

por gunslinger47:

phoneNumber.replaceAll("\\D", ""); 

Sustituye a cualquier no-dígitos con una cadena vacía.

+12

Podría ser mejor que solo vaya para '" \\ D "'. Habla la intención original más directamente. "Elimina todo lo que no sea un dígito". – Gunslinger47

+0

Ambos trabajos anteriores en mi caso ... porque limito al usuario a ingresar solo dígitos, corchetes y guiones redondos ... Muchas gracias chicos :) –

+1

@Gunslinger: ese es un buen punto. Editaré mi solución. –

4
public static String getMeMyNumber(String number, String countryCode) 
    {  
     String out = number.replaceAll("[^0-9\\+]", "")  //remove all the non numbers (brackets dashes spaces etc.) except the + signs 
         .replaceAll("(^[1-9].+)", countryCode+"$1")   //if the number is starting with no zero and +, its a local number. prepend cc 
         .replaceAll("(.)(\\++)(.)", "$1$3")   //if there are left out +'s in the middle by mistake, remove them 
         .replaceAll("(^0{2}|^\\+)(.+)", "$2")  //make 00XXX... numbers and +XXXXX.. numbers into XXXX... 
         .replaceAll("^0([1-9])", countryCode+"$1");   //make 0XXXXXXX numbers into CCXXXXXXXX numbers 
     return out; 

    } 
Cuestiones relacionadas