最后一个分隔符似乎是错误的

Last delimiter seems wrong

我有一个包含以下字符串的文本文件:

I want to know. bye bye. I found you. I hate you. I hear you.

我想做的是在文件中搜索目标语句。 这是我使用的代码:

public String lookFor(String target, File targetDestination) throws FileNotFoundException {
    Scanner scan = new Scanner(targetDestination);

    scan.useDelimiter("\. ");
    while (scan.hasNext()) {
        if (scan.next().compareTo(target) == 0)
            return target;
    }
    return "Sorry,(" + target + ") cannot be found!";
}

每当我尝试寻找任何句子时,代码都可以正常工作,例如:"I hate you" it returns "I hate you",但是当我尝试 return最后一句"I hear you"说找不到,直到我加了一个点"I hear you."然后它return就找到了。

谁能解释一下到底发生了什么?感觉就是分隔符,不过我对正则表达式了解不多

"\. " 是一个匹配点后跟 space.

的正则表达式

看看你的句子:

I want to know. bye bye. I found you. I hate you. I hear you.
              ↑        ↑            ↑           ↑
      dot followed by a space    dot followed by a space 

但是,最后一个点是 而不是 ,如果它是“我听到你了。”,后面跟着一个 space。

注意:使用调试器可以节省您的时间并让您更好地理解您的代码。

所有评论和答案都是正确的。

您需要将分隔符正则表达式更改为 "\.\s*" 以允许零个或任意数量的空格跟在点之后。