我正在制作一个关于客户端/服务器编程的程序,用户将在控制台中输入一个字符串,该程序将在.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"
标记为you
和re"
。