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提供一个错误的值。我尝试删除分隔符"one_answers",但仍然不起作用。

我曾经修改过代码,有时我会得到布尔值wordFound的真值,但现在它似乎没有忽略这个情况。例如,我输入"你是",wordFound变为true。但如果我把它改成"你是"或"你是我",wordFound仍然是假的。

有人能帮我找到解决这个问题的办法吗?谢谢

您的字符串标记器应该是:

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

在您的代码中,您有StringTokenizer(line, ", .();:-?!'");,即'而不是",它将文本you're"标记为youre"

相关内容

  • 没有找到相关文章

最新更新