2009-10-07 4 views
55

Tengo una cadena larga. ¿Cuál es la expresión regular para dividir los números en la matriz?¿Cómo elimino el carácter no numérico de una cadena en java?

+0

1. Publicar un ejemplo de cadena 2. Es una cadena o una matriz o una matriz de cadenas (String [])? 2. ¿Qué quieres? simplemente elimine el carácter no numérico de una Cadena o elimínelo y obtenga una Matriz que contenga los números – eveliotc

+2

Haga esta pregunta más clara. Algunos punteros: Mostrar entrada de cadena y salida de cadena. Reescribe la segunda oración para que sea un poco más explicativa. ¿Tienes varios números separados por un no dígito? O cada dígito debe ser dividido? –

Respuesta

137

¿Está eliminando o dividiendo? Esto eliminará todos los caracteres no numéricos.

myStr = myStr.replaceAll("[^\\d]", "") 
+4

'myStr = myStr.replaceAll (" [\\ D] "," ");' –

+10

Versión sin corchetes: 'myStr.replaceAll (" \\ D + "," ")', tal vez más legible. – Adil

6

Usted tendrá que utilizar la clase String Split() método y pasar en una expresión regular de '\ + D', que coincidirá con al menos un no-número.

myString.split("\\D+"); 
+0

Esto eliminará todos los caracteres numéricos y dará una matriz con todos los caracteres no numéricos. Es exactamente lo opuesto a lo solicitado. – tangens

+1

Vaya, debo haber malinterpretado cuál fue la pregunta. En ese caso, sería la versión negada de la expresión regular, que es \\ D + Voy a actualizar mi respuesta! –

20

Un enfoque más para eliminar todos los caracteres no numéricos de una cadena:

String newString = oldString.replaceAll("[^0-9]", ""); 
+1

Funciona bajo 'gawk' también. – Hastur

0

Esto funciona en el SDK de Flex 4.14.0

myString.replace (/ [^ 0-9 & & ^.]/G, "");

+2

Agregue algunas explicaciones a su código – KhorneHoly

0

se puede usar un método recursivo, como a continuación:

public static String getAllNumbersFromString(String input) { 
     if (input == null || input.length() == 0) { 
      return ""; 
     } 
     char c = input.charAt(input.length() - 1); 
     String newinput = input.substring(0, input.length() - 1); 

      if (c >= '0' && c<= '9') { 
      return getAllNumbersFromString(newinput) + c; 

     } else { 
      return getAllNumbersFromString(newinput); 
     } 
    } 
0

Una manera sencilla sin necesidad de utilizar expresiones regulares:

public static String getOnlyNumerics(String str) { 
    if (str == null) { 
     return null; 
    } 
    StringBuffer strBuff = new StringBuffer(); 
    char c; 
    for (int i = 0; i < str.length() ; i++) { 
     c = str.charAt(i); 
     if (Character.isDigit(c)) { 
      strBuff.append(c); 
     } 
    } 
    return strBuff.toString(); 
} 
6

Otra solución expresiones regulares:

string.replace(/\D/g,''); 
+0

Esto funcionó para cadenas de javascript, ¡gracias! – jlafay

2

Java 8 collection streams:

StringBuilder sb = new StringBuilder(); 
test.chars().mapToObj(i -> (char) i).filter(Character::isDigit).forEach(sb::append); 
System.out.println(sb.toString()); 
Cuestiones relacionadas