Estoy usando un Java StreamTokenizer para extraer las diversas palabras y números de una Cadena, pero me he encontrado con un problema donde los números que incluyen comas, p. Ej. 10,567 se lee como 10.0 y, 567.¿Cómo sacar números de la cadena?
También necesito eliminar todos los caracteres no numéricos de los números donde puedan aparecer, p. Ej. $ 678.00 debería ser 678.00 o -87 debería ser 87.
Creo que esto se puede lograr a través de los métodos whiteSpace y wordChars, pero ¿alguien tiene alguna idea de cómo hacerlo?
El código básico StreamTokenizer en la actualidad es:
BufferedReader br = new BufferedReader(new StringReader(text));
StreamTokenizer st = new StreamTokenizer(br);
st.parseNumbers();
st.wordChars(44, 46); // ASCII comma, - , dot.
st.wordChars(48, 57); // ASCII 0 - 9.
st.wordChars(65, 90); // ASCII upper case A - Z.
st.wordChars(97, 122); // ASCII lower case a - z.
while (st.nextToken() != StreamTokenizer.TT_EOF) {
if (st.ttype == StreamTokenizer.TT_WORD) {
System.out.println("String: " + st.sval);
}
else if (st.ttype == StreamTokenizer.TT_NUMBER) {
System.out.println("Number: " + st.nval);
}
}
br.close();
O alguien podría sugerir una expresión regular para lograr esto? No estoy seguro de si REGEXP es útil aquí dado que cualquier parding tendría lugar después de que los tokens se leen de la cadena.
Gracias
Mr Morgan.
¿Qué debe suceder a '1,2,3,4'? – polygenelubricants