0

我正在制作一个关于客户端/服务器编程的程序,其中用户将在控制台中输入一个字符串,该程序将在 .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 的真值,但现在它似乎并没有忽略这种情况。例如,我输入“you're”,wordFound 变为 true。但是如果我把它改成“You're”或“yOu'Re”,wordFound 仍然是假的。

有人可以帮我找到解决这个问题的方法吗?谢谢。

4

1 回答 1

1

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

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

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

于 2012-01-10T18:12:04.327 回答