我正在使用 Java StreamTokenizer 来提取字符串的各种单词和数字,但遇到了一个问题,其中涉及包含逗号的数字,例如 10,567 被读取为 10.0 和 ,567。
我还需要从可能出现的数字中删除所有非数字字符,例如 $678.00 应该是 678.00 或 -87 应该是 87。
我相信这些可以通过 whiteSpace 和 wordChars 方法来实现,但有人知道怎么做吗?
目前基本的streamTokenizer代码是:
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();
或者有人可以建议使用 REGEXP 来实现这一目标吗?我不确定 REGEXP 在这里是否有用,因为在从字符串中读取标记后会发生任何处理。
谢谢
摩根先生。