我正在查看Scanner文档(https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html),我发现有条件的hasNext方法只有在下一个元素满足某个条件时才返回true。我们说我有以下扫描仪。我如何检查扫描仪的下一个术语是否以" a"
开头?Scanner s = new Scanner("asd ab anob");
答案 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.*");