我是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
。有人可以指出我的错误。
答案 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", "");