Java 了解findWithinHorizon输出
在玩Java 了解findWithinHorizon输出,java,string,java.util.scanner,Java,String,Java.util.scanner,在玩Scanner类时,我编写了这段代码来查看findWithinHorizon的行为,但是,我无法确切地解释为什么输出中缺少一些模式 import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.Scanner; public class Main { public static void main(String[] args) throws FileNotFoundE
Scanner
类时,我编写了这段代码来查看findWithinHorizon
的行为,但是,我无法确切地解释为什么输出中缺少一些模式
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
FileInputStream FS = new FileInputStream("dummy.txt");
Scanner scanner = new Scanner(FS);
int counter = 0;
while (scanner.hasNext()) {
counter++;
String P = scanner.findWithinHorizon(scanner.next(),100);
if (P!=null)
System.out.println(counter+" "+P);
}
}
}
我的dummy.txt
文件有以下文本:
在路上她遇到了一个复制品。副本警告小盲文说
从哪里来的话,它会被重写一千遍
从它的起源留下的一切都是“和”和“和”
小盲文应该掉头回到它自己的、安全的地方
国家
上面的代码打印出来
2 her
3 e
4 from
5 its
这很清楚。我不明白的是,为什么输出中没有单词copy?另外,在试图理解此方法的机制时,我意识到地平线实际上是字符数(来自Javadoc:无分隔符)。但是关于scanner.next()呢?它是否将迭代器移动到下一个字符或下一个单词?如果是前者,结果中如何包含单词(例如,her) 1)之所以没有“复制”,是因为Scanner.findWithinHorizon()
也会推进令牌。
见文件
“如果找到该模式,扫描仪将通过匹配的输入并返回匹配该模式的字符串。”
因此,当发现“她”时,它会跳过原始的“复制”标记
2) Scanner.next()
将迭代器移动到下一个标记(默认情况下由“”删除)
3) “她”是从w“她”e中找到的 没有攻击,但我认为你关于
copy.
的论点是无效的findWithinHorizon
忽略分隔符。正如你正确地提到的那样,这就像hers
和where
。我并没有完全测试出来,但我会尽力弄清楚