Я использую 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, учитывая, что любой парсинг будет иметь место после того, как токены будут прочитаны из строки.
Спасибо
Мистер Морган.
1,2,3,4
? - person polygenelubricants   schedule 17.07.2010