Utilizzo un Java StreamTokenizer per estrarre le varie parole e numeri di una stringa ma ho incontrato un problema in cui sono interessati numeri che includono virgole, ad es. 10.567 viene letto come 10.0 e, 567.Come ottenere numeri fuori stringa?
Devo anche rimuovere tutti i caratteri non numerici dai numeri in cui potrebbero verificarsi, ad es. $ 678,00 dovrebbe essere 678,00 o -87 dovrebbe essere 87.
Credo che questi possano essere raggiunti tramite i metodi whiteSpace e wordChars ma qualcuno ha qualche idea su come farlo?
Il codice di base StreamTokenizer al momento è:
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 qualcuno potrebbe suggerire un REGEXP per raggiungere questo obiettivo? Non sono sicuro che REGEXP sia utile qui dato che qualsiasi parding avverrebbe dopo che i token sono stati letti dalla stringa.
Grazie
Signor Morgan.
Cosa dovrebbe accadere a '1,2,3,4'? – polygenelubricants