recorrer - separar letra por letra en java
Separar cadena para obtener una matriz de dígitos solamente(escapando espacios en blanco y vacíos) (1)
Utilice [^0-9]+
como expresión regular para hacer que la expresión regular coincida con cualquier número positivo de no dígitos.
id.split("[^0-9]+");
Salida
[13, 145097, 102]
Editar
Dado que no elimina el rastreo de la primera String
vacía, si la String
comienza con no dígitos, debe eliminar manualmente esa, por ejemplo, mediante:
Pattern.compile("[^0-9]+").splitAsStream(id).filter(s -> !s.isEmpty()).toArray(String[]::new);
En mi caso, se asigna una cadena a mi función y debería extraer solo los números y deshacerme de todo lo demás.
Entradas de ejemplo y su salida de matriz esperada:
13/0003337/99 // Should output an array of "13", "0003337", "99"
13-145097-102 // Should output an array of "13", "145097", "102"
11 9727 76 // Should output an array of "11", "9727", "76"
En Qt / C ++ solo lo haría de la siguiente manera:
QString id = "13hjdhfj0003337 90";
QRegularExpression regex("[^0-9]");
QStringList splt = id.split(regex, QString::SkipEmptyParts);
if(splt.size() != 3) {
// It is the expected input.
} else {
// The id may have been something like "13 145097 102 92"
}
Entonces con Java probé algo similar pero no funcionó como esperaba.
String id = "13 text145097 102"
String[] splt = id.split("[^0-9]");
ArrayList<String> idNumbers = new ArrayList<String>(Arrays.asList(splt));
Log.e(TAG, "ID numbers are: " + indexIDS.size()); // This logs more than 3 values, which isn''t what I want.
Entonces, ¿cuál sería la mejor manera de escapar de todos los espacios y caracteres, excepto por los números [0-9]?