una separar recorrer por para palabra letras letra funcion extraer dividir cortar como cadena java c++ regex qt split

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]?