有关分隔符的Scanner.skip文档

bla*_*nda 6 java java.util.scanner

根据javadocjava.util.Scanner.skip,这个方法:

跳过与指定模式匹配的输入,忽略分隔符.

但我对"忽略delimeters"这个短语的含义感到困惑,因为以下代码在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!
   }
}
Run Code Online (Sandbox Code Playgroud)

跳过时似乎没有忽略分隔符,如线A所示.但是,即使其文档使用相同的"忽略分隔符"短语,但C行似乎也可以工作.我不明白他们在这种情况下"忽略分隔符"的概念还是这是一个真正的错误?我错过了什么?

Sea*_*ght 2

您遗漏了该方法描述的下一句(强调我的):

如果指定模式的锚定匹配成功,此方法将跳过输入。

所以Scanner与其说是“忽略”分隔符,不如说是简单地尝试匹配指定的正则表达式而不考虑分隔符。换句话说,前面的空格World不被 视为分隔符skip(),而只是它尝试匹配的输入的一部分。