scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
有人可以解释一下,上面的代码是什么意思。
我刚接触Java。
任何帮助将不胜感激。
答案 0 :(得分:1)
public Scanner skip(Pattern pattern)
跳过与指定模式匹配的输入,忽略定界符。如果指定模式的锚定匹配成功,则此方法将跳过输入。
如果在当前位置找不到与指定模式的匹配项,则不跳过任何输入,并引发NoSuchElementException。由于此方法试图从扫描仪的当前位置开始匹配指定的图案,因此可以匹配很多输入(例如“。*”)的图案可能会导致扫描仪缓冲大量输入
。
因此,您可以使用正则表达式“移动”扫描仪位置。
跳过行首:
Scanner scan = new Scanner("Hello world");
scan.skip("Hello ");
System.out.println(scan.nextLine());
scan.close();
世界
由于它使用的是正则表达式,因此您将跳过直到行中间的工作:
Scanner scan = new Scanner("Hello world, I am happy to see you");
scan.skip(".*I am ");
System.out.println(scan.nextLine());
scan.close();
很高兴见到你
答案 1 :(得分:0)
此类的skip()
方法可以做到这一点。它将跳过与模式匹配的输入。在这种情况下,该模式表示跳过回车符(\ r)和换行符(\ n),以及一些Unicode字符。
因此,当读取该行时,它将忽略该模式并仅返回字符串的其余部分。一个简单的例子就是这样。假设您有一个字符串:
String s = "Hello world, this is my scanner!";
然后,如果您有扫描仪,例如:
Scanner scan = new Scanner(s);
scan.skip(", this is my scanner");
然后在您这样做时:
System.out.println("" + scanner.nextLine());
控制台的输出将很简单
Hello world!
发生了什么情况,模式", this is my scanner"
被匹配,并从输入中忽略。然后剩下的就是"Hello world!"
字符串。