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