我有一个包含以下字符串的文本文件:
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 want to know. bye bye. I found you. I hate you. I hear you.
↑ ↑ ↑ ↑
dot followed by a space dot followed by a space
但是,如果是“我听到你了。”,则最后一个点后面不带空格。
注意:使用调试器可以节省您的时间,并使您更好地理解代码。
关于java - 最后一个分隔符似乎错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29877018/