Я использую 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, учитывая, что любое прочтение будет иметь место после чтения токенов из строки.
Спасибо
Мистер Морган.