我正在使用Java StreamTokenizer来提取字符串中的各种单词和数字,但是遇到了一个问题,涉及包含逗号的数字,例如10,567被读作10.0和,567。
我还需要从可能出现的数字中删除所有非数字字符,例如$678.00应该是678.00或-87应该是87。
我相信这可以通过whiteSpace和wordChars方法实现,但有没有人知道如何做?
目前基本的streamTokenizer代码如下:
我还需要从可能出现的数字中删除所有非数字字符,例如$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();
还有人能建议一个正则表达式来实现这个吗?我不确定在这里使用正则表达式是否有用,因为任何分析都将在从字符串读取令牌之后进行。
谢谢
Morgan先生。
1,2,3,4
应该发生什么? - polygenelubricants