bla*_*nda 6 java java.util.scanner
根据javadocjava.util.Scanner.skip
,这个方法:
跳过与指定模式匹配的输入,忽略分隔符.
但我对"忽略delimeters"这个短语的含义感到困惑,因为以下代码在Eclipse中使用Java 7引发异常:
import java.util.Scanner;
public class Example
{
public static void main(String [] args)
{
Scanner sc = new Scanner("Hello World! Here 55");
String piece = sc.next();
sc.skip("World"); // Line A throws NoSuchElementException, vs.
sc.skip("\\sWorld"); // Line B works!
sc.findInLine("World"); // Line C works!
}
}
Run Code Online (Sandbox Code Playgroud)
跳过时似乎没有忽略分隔符,如线A所示.但是,即使其文档使用相同的"忽略分隔符"短语,但C行似乎也可以工作.我不明白他们在这种情况下"忽略分隔符"的概念还是这是一个真正的错误?我错过了什么?
您遗漏了该方法描述的下一句(强调我的):
如果指定模式的锚定匹配成功,此方法将跳过输入。
所以Scanner
与其说是“忽略”分隔符,不如说是简单地尝试匹配指定的正则表达式而不考虑分隔符。换句话说,前面的空格World
不被 视为分隔符skip()
,而只是它尝试匹配的输入的一部分。
归档时间: |
|
查看次数: |
364 次 |
最近记录: |