String a ="the STRING TOKENIZER CLASS ALLOWS an APPLICATION to BREAK a STRING into TOKENS. ";
StringTokenizer st = new StringTokenizer(a);
while (st.hasMoreTokens()){
System.out.println(st.nextToken());
Учитывая приведенные выше коды, вывод следующий:
the
STRING TOKENIZER CLASS
ALLOWS
an
APPLICATION
to
BREAK
a
STRING
into
TOKENS.
Мой единственный вопрос: почему «STRING TOKENIZER CLASS» был объединен в один токен????????
Когда я пытаюсь запустить этот код,
System.out.println("STRING TOKENIZER CLASS".contains(" "));
Он напечатал забавный результат,
ЛОЖНЫЙ
Звучит не логично, верно? Я понятия не имею, что пошло не так.
Я выяснил причину: пространство каким-то образом не было распознано Java как действительное пространство. Но я не знаю, как это оказалось так, начиная с предварительной обработки и заканчивая кодом, который я опубликовал.
Ребята, мне нужно подчеркнуть, что приведенный ниже код запускается первым перед приведенным выше.
if (!suspectedContentCollector.isEmpty()){ Итератор i =подозреваемыйContentCollector.iterator(); Строка темп=""; в то время как (i.hasNext()){ temp+=i.next().toLowerCase()+ " "; } StringTokenizer st = новый StringTokenizer(temp);
while (st.hasMoreTokens()){
temp=st.nextToken();
temp=StopWordsRemover.remove(temp);
analyzedSentence = analyzedSentence.replace(temp,temp.toUpperCase());
}
}
Следовательно, как только он был изменен на ПРОПИСНЫЕ, что-то где-то пошло не так, и я понял, что не распознаются только определенные пробелы. Может ли это быть причиной извлечения текста из документа?
Следуя коду,
String a ="КЛАСС ТОКЕНИЗАТОРА СТРОКИ ПОЗВОЛЯЕТ ПРИЛОЖЕНИЮ РАЗБИВАТЬ СТРОКУ на ТОКЕНЫ. "; for (int i: a.toCharArray()) { System.out.print(i + ""); }
произведен следующий вывод,
116 104 101 32 83 84 82 73 78 71 160 84 79 75 69 78 73 90 69 82 160 67 76 65 83 83 32 65 76 76 79 87 83 32 97 110 32 65 80 80 76 73 67 65 84 73 79 78 32 116 111 32 66 82 69 65 75 32 97 32 83 84 82 73 78 71 32 105 110 116 111 32 84 79 75 69 78 83 46 160 32