Java中的Scanner.skip()

时间:2014-09-06 13:45:23

标签: java

我是Java的新手,并试图了解Scanner类。我正在使用example code来了解Scanner类的skip(String Pattern)方法。我稍稍调整了代码并将其更改为

import java.util.*;

public class ScannerDemo {

   public static void main(String[] args) {

      String s = "Hello World! 3 + 3.0 = 6.0 true ";

      // create a new scanner with the specified String Object
      Scanner scanner = new Scanner(s);

      // changed the string to skip
      scanner.skip("World");

      // print a line of the scanner
       System.out.println("" + scanner.nextLine());

      // close the scanner
      scanner.close();
   }
}

我期待的输出是

Hello ! 3 + 3.0 = 6.0 true

但我得NoSuchElementException。有人可以指出我的错误。

3 个答案:

答案 0 :(得分:6)

不是nextLine给你的例外,而是跳过(" World")。

当扫描仪启动时,它指向" H"在" Hello Word ...",这是第一个字母。

然后你告诉他跳过,并且必须为跳过提供一个正则表达式。

现在,一个好的正则表达式跳到“#34; World"是:

scanner.skip(".*World");

" *世界"意味着"每个角色都会跟随世界"。

这会将扫描仪移动到"!"在" Hello World"之后,所以nextLine()将返回

! 3 + 3.0 = 6.0 true

"你好"部分已被跳过,按照跳过。

答案 1 :(得分:0)

Scanner源字符串指向字符串中的第一个单词Hello。要获得预期的输出,只需从String

中删除单词即可
s = s.replace("World", "");

答案 2 :(得分:0)

为什么使用Scanner来实现这一目标?您可以在字符串中轻松使用replace方法

s = s.replace("World", "");