3

我有一个名为quotes.txt 的外部文件,我将向您展示该文件的一些内容:

1 Everybody's always telling me one thing and out the other.
2 I love criticism just so long as it's unqualified praise.
3 The difference between 'involvement' and 'commitment' is like an eggs-and-ham 
  breakfast: the chicken was 'involved' - the pig was 'committed'.

我用这个:StringTokenizer str = new StringTokenizer(line, " .'");

这是搜索的代码:

String line = "";
boolean wordFound = false;

while((line = bufRead.readLine()) != null) {
    while(str.hasMoreTokens()) {
       String next = str.nextToken();
       if(next.equalsIgnoreCase(targetWord) {
            wordFound = true;
            output = line;
            break;
       }
    }

    if(wordFound) break;
    else output = "Quote not found";
}

现在,我想在第 1 行和第 2 行中搜索字符串"Everybody's""it's"但它不起作用,因为撇号是分隔符之一。如果我删除该分隔符,那么我将无法在第 3 行中搜索"involvement""commitment"和。"involved""committed"

我可以用什么合适的代码来解决这个问题?请帮助和感谢。

4

2 回答 2

3

我建议使用正则表达式(Pattern而不是StringTokenizer为此。例如:

final Pattern targetWordPattern =
    Pattern.compile("\\b" + Pattern.quote(targetWord) + "\\b",
                    Pattern.CASE_INSENSITIVE);

String line = "";
boolean wordFound = false;

while((line = bufRead.readLine()) != null) {
    if(targetWordPattern.matcher(line).find()) {
        wordFound = true;
        break;
    }
    else
        output = "Quote not found";
}
于 2012-01-11T03:36:50.427 回答
1

用空格标记,然后用 ' 字符修剪。

于 2012-01-11T03:33:15.377 回答