StringTokenizer似乎不适用于我的程序 - Java

时间:2012-01-10 17:55:17

标签: java stringtokenizer

我正在制作一个关于客户端/服务器编程的程序,用户将在控制台中输入一个字符串,程序将搜索该字符串的.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仍然是错误的。

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

1 个答案:

答案 0 :(得分:1)

你的字符串标记符应该是:

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

在您的代码中,您有StringTokenizer(line, ", .();:-?!'"); 即。 '代替" ,这会将您的文字you're"标记为youre"