Ich verwende einen Java StreamTokenizer, um die verschiedenen Wörter und Zahlen eines Strings zu extrahieren, habe aber ein Problem mit Zahlen, die Kommas enthalten, z. 10.567 wird als 10.0 und 567 gelesen.Wie bekomme ich Zahlen aus der Zeichenfolge?
Ich muss auch alle nicht numerischen Zeichen von den Nummern entfernen, wo sie auftreten könnten, z. $ 678.00 sollte 678.00 sein oder -87 sollte 87.
Ich glaube, dass diese über die WhiteSpace und WordChars Methoden erreicht werden können, aber hat jemand eine Idee, wie es geht?
Der Grund derzeit StreamTokenizer Code ist:
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();
Oder jemand eine REGEXP dies zu erreichen, könnte vermuten lassen? Ich bin mir nicht sicher, ob REGEXP hier nützlich ist, da jedes Parding stattfinden würde, nachdem die Token aus der Zeichenfolge gelesen wurden.
Danke
Herr Morgan.
Was '1,2,3,4' passieren sollte? – polygenelubricants