2009-09-28 17 views
14
public static String removeNonDigits(final String str) { 
    if (str == null || str.length() == 0) { 
     return ""; 
    } 
    return str.replaceAll("/[^0-9]/g", ""); 
} 

Esto solo debe obtener los dígitos y regresar pero no hacerlo como se esperaba! ¿Alguna sugerencia?Reemplazar todos los no dígitos con un carácter vacío en una cadena

+0

Si observas el método String.replaceAll, verás que está haciendo Pattern.compile (regex) .matcher (this) .replaceAll (replacement), que es ineficiente si haces esto mucho. Una mejor forma sería extraer el patrón compilado en una constante. – kfox

Respuesta

35

Java no está Perl :) Trate "[^0-9]+"

+0

LOL .. Gracias .. :) –

+0

@whyoz: Por favor haga una nueva pregunta –

+0

@whyoz: Nadie va a encontrar la respuesta en ningún comentario. –

15

Prueba esto:

public static String removeNonDigits(final String str) { 
    if (str == null || str.length() == 0) { 
     return ""; 
    } 
    return str.replaceAll("\\D+", ""); 
} 
+0

Tienes que escapar de la barra (por el bien de Java, no la expresión regular): "\\ D +" –

+0

Woops, \\ fijo \\ –

+0

Gracias chicos ... :) –

2
public String replaceNonDigits(final String string) { 
    if (string == null || string.length() == 0) { 
     return ""; 
    } 
    return string.replaceAll("[^0-9]+", ""); 
} 

Esto hace lo que quiere.

1

Yo recomendaría para este caso en particular simplemente tener un pequeño bucle sobre la cadena.

StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < s.length(); i++) { 
    char ch = s.charAt(i); 
    if (ch =='0' || ch == '1' || ch == '2' ...) { 
     sb.add(ch); 
    } 
} 
return sb.toString(); 
+4

Character.isDigit (...) es una mejor opción que '(ch ==' 0 '|| ch ==' 1 '|| ch ==' 2 '....)' IMO. –

3

Utilice siguiente, donde enumValue es la cadena de entrada.

enumValue.replaceAll("[^0-9]","") 

Esto tomará la cadena y reemplazará todos los dígitos que no sean números con un "".

por ejemplo: de entrada es _126576, la salida será 126576.

Espero que esto ayude.

Cuestiones relacionadas