什么是Java中的scanner skip,为什么要使用它?

什么是Java中的scanner skip,为什么要使用它?,java,regex,java.util.scanner,Java,Regex,Java.util.scanner,有人能解释一下,上面的代码是什么意思 我对Java相当陌生 任何帮助都将不胜感激。本课程的skip方法正是这样做的。它将跳过与模式匹配的输入。在本例中,模式表示跳过回车\r和新行\n以及一些unicode字符 因此,当读取该行时,它将忽略该模式并仅返回字符串的其余部分。一个简单的例子是这样的。假设您有一个字符串: 字符串s=你好,世界,这是我的扫描仪 然后,如果您有扫描仪,例如: scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); 然后,当您这

有人能解释一下,上面的代码是什么意思

我对Java相当陌生

任何帮助都将不胜感激。

本课程的skip方法正是这样做的。它将跳过与模式匹配的输入。在本例中,模式表示跳过回车\r和新行\n以及一些unicode字符

因此,当读取该行时,它将忽略该模式并仅返回字符串的其余部分。一个简单的例子是这样的。假设您有一个字符串:

字符串s=你好,世界,这是我的扫描仪

然后,如果您有扫描仪,例如:

scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); 
然后,当您这样做时:

System.out.println+scanner.nextLine

控制台的输出将是简单的

你好,世界

所发生的是模式,这是我的扫描仪匹配,并从输入中忽略。那么剩下的就是Hello world!绳子

跳过与指定模式匹配的输入,忽略分隔符。如果指定模式的锚定匹配成功,此方法将跳过输入。 如果在当前位置未找到与指定模式的匹配项,则不会跳过任何输入,并引发NosTouchElementException

由于此方法试图从扫描仪的当前位置开始匹配指定的模式,因此可以匹配大量输入的模式。*例如,可能会导致扫描仪缓冲大量输入

因此,这允许您使用正则表达式移动扫描仪位置

例子: 跳过行的开头:

public Scanner skip(Pattern pattern)
世界

因为这是使用正则表达式,所以跳过直到行中的一个工作:

Scanner scan = new Scanner("Hello world");
scan.skip("Hello ");

System.out.println(scan.nextLine());
scan.close();
很高兴见到你

跳过将在方法调用期间完成,而不是在下一次读取操作期间完成。所以你会在跳过的过程中得到一个NoSuchElementException,因为你试图跳过一些找不到的东西,它是从helloworld开始的。这个解释是不正确的。
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();