我正在制作一个关于客户端/服务器编程的程序,用户将在控制台中输入一个字符串,程序将搜索该字符串的.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提供了一个错误值。我尝试删除分隔符“”和“'”但仍然不起作用。
我曾经修改过代码,有时我会为boolean wordFound获得一个真值,但现在看起来似乎并没有忽略这种情况。例如我输入“你是”,wordFound变为真实。但是,如果我将其更改为“你是”或“yOu'Re”,则wordFound仍然是错误的。
有人可以帮我找到解决这个问题的方法吗?感谢。
答案 0 :(得分:1)
你的字符串标记符应该是:
StringTokenizer str = new StringTokenizer(line, ", .();:-?!\"");
在您的代码中,您有StringTokenizer(line, ", .();:-?!'");
即。 '
代替"
,这会将您的文字you're"
标记为you
和re"
。