根据the javadoc for java.util.Scanner.skip
,这种方法:
跳过与指定模式匹配的输入,忽略分隔符。
但是我很困惑这句话“忽略了分界符”。意味着因为以下代码在Eclipse中使用Java 7引发异常:
import java.util.Scanner;
public class Example
{
public static void main(String [] args)
{
Scanner sc = new Scanner("Hello World! Here 55");
String piece = sc.next();
sc.skip("World"); // Line A throws NoSuchElementException, vs.
sc.skip("\\sWorld"); // Line B works!
sc.findInLine("World"); // Line C works!
}
}
跳过时似乎没有忽略分隔符,如A行所示。但是,即使C文档使用相同的"忽略分隔符"但是C行似乎也能正常工作。短语。我不明白他们的概念"忽略分隔符"在这种情况下或这是一个真正的错误?我错过了什么?
答案 0 :(得分:2)
你遗漏了方法描述的下一句话(强调我的):
如果指定模式的锚定匹配成功,此方法将跳过输入。
因此Scanner
并非“忽略”分隔符,而只是尝试匹配指定的正则表达式而不考虑分隔符。换句话说,World
之前的空格不会被skip()
视为分隔符,而只是它尝试匹配的输入的一部分。