有关分隔符的Scanner.skip文档

时间:2016-10-27 19:04:33

标签: java java.util.scanner

根据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行似乎也能正常工作。短语。我不明白他们的概念"忽略分隔符"在这种情况下或这是一个真正的错误?我错过了什么?

1 个答案:

答案 0 :(得分:2)

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

  

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

因此Scanner并非“忽略”分隔符,而只是尝试匹配指定的正则表达式而不考虑分隔符。换句话说,World之前的空格不会被skip()视为分隔符,而只是它尝试匹配的输入的一部分。