StringTokenizer не работает в моей программе - Java - PullRequest
0 голосов
/ 10 января 2012

Я делаю программу для программирования клиент / сервер, в которой пользователь вводит строку в консоли, и программа будет искать каждую строку в файле .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 становится правдой. Но если я поменяю его на «Вы» или «yOu'Re», wordFound все равно будет ложным.

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

1 Ответ

1 голос
/ 10 января 2012

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

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

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

...