StringTokenizer не работает в моей программе - Java

Я делаю программу о клиент-серверном программировании, в которой пользователь вводит строку в консоль, и программа будет искать эту строку в каждой строке файла .txt и выводит всю строку, где находится эта конкретная строка.

Это часть кода, где используется StringTokenizer:

String line = "";
boolean wordFound = false;

while((line = bufRead.readLine()) != null) {
    StringTokenizer str = new StringTokenizer(line, ", .();:-?!'");

    while(str.hasMoreTokens()) {
        String next = str.nextToken();
        if(next.equalsIgnoreCase(targetWord)) {
            wordFound = true;
            output = line;
            break;
        }
    }

    if(wordFound) break;
    else output = "Quote not found.";
}    

Проблема в том, что когда я хочу найти строку, например. "ты" или "это мой день рождения" (с апострофом и/или пробелами), это дает ложное значение для логического слова wordFound. Я попытался удалить разделители " " и "'", но все равно это не работает.

Я когда-то модифицировал код и иногда получаю истинное значение для логического слова wordFound, но теперь похоже, что он не игнорирует регистр. например Я ввел "ты", словоНайденное становится истинным. Но если я изменю его на «Ты» или «ты», wordFound по-прежнему будет ложным.

Может ли кто-нибудь помочь мне найти решение этой проблемы? Спасибо.


person user1141418    schedule 10.01.2012    source источник


Ответы (1)


Ваш строковый токенизатор должен быть:

StringTokenizer str = new StringTokenizer(line, ", .();:-?!\"");

В вашем коде есть StringTokenizer(line, ", .();:-?!'"); т.е. ' вместо ", который разбивает ваш текст you're" на you и re".

person anubhava    schedule 10.01.2012