Scanner.hasNext基于下一个String的开头

时间:2016-10-08 03:12:51

标签: java

我正在查看Scanner文档(https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html),我发现有条件的hasNext方法只有在下一个元素满足某个条件时才返回true。我们说我有以下扫描仪。我如何检查扫描仪的下一个术语是否以" a"

开头?
Scanner s = new Scanner("asd ab anob");

4 个答案:

答案 0 :(得分:0)

hasNext(Pattern pattern)应该完成这项工作,或hasNext(String pattern)另外编译从String到Pattern的模式:

if (s.hasNext("^a.*"))
    ... // next token starts with "a"

答案 1 :(得分:0)

像这样。

Scanner s = new Scanner("asd ab anob");

s.hasNext("a[a-z]*");

匹配由“a”后跟零个或多个小写“拉丁”字母组成的“单词”。可以修改正则表达式,为您提供匹配“单词”的不同标准。

如果您要反复这样做,那么以下情况会更好:

private static Pattern WORD = Pattern.compile("a[a-z]*");

...

Scanner s = new Scanner("asd ab anob");
s.hasNext(WORD);

根据javadoc,处理分隔符的常规规则适用,模式匹配使用“匹配”语义完成。这意味着没有必要在正则表达式中使用“锚”(例如“^”)。

答案 2 :(得分:0)

Scanner s = new Scanner("asd ab anob");
String nextString = s.nextLine();
boolean result = nextString.startsWith("a");

答案 3 :(得分:0)

它所谈论的模式是正则表达式。

"的正则表达式以"开头。是" ^ a。*"

boolean a = s.hasNext("^a.*");