在java中使用扫描仪,如何在string不是正则模式的情况下hasnext(累积)?
-
19-09-2019 - |
题
我正在尝试作为我的问题指出,所以我有以下代码可以找到比赛。
String test = scan.next();
if (test.equals("$let"))
return 1;
但是,我宁愿使用hasnext,以免消耗令牌。但是,当我执行以下操作时,它会失败。
if (scan.hasNext("$let"))
return 1;
我意识到,当给予时有一个变量,它会期望有一个模式,但是我想如果我没有任何正则符号,它应该有效。我还认为$可能是某种正则符号,所以我尝试 /$,但是这无效!
谢谢您的帮助!
解决方案
您应该使用 $来逃脱正则义务,但是只需获得下一个()并保存结果就更容易了。
其他提示
通常,如果您有一些任意的字符串,您想从字面上匹配,而对任何正则元听物没有任何含义,则可以使用 java.util.Pattern.quote
.
Scanner sc = new Scanner("$)}**");
System.out.println(sc.hasNext(Pattern.quote("$)}**"))); // prints "true"
System.out.println(sc.hasNext("\\Q$)}**\\E")); // prints "true"
System.out.println(sc.hasNext("$)}**")); // throws PatternSyntaxException
您也可以使用 \Q
和 \E
引号,但是当然,您需要确保引用的字符串本身不包含 \E
.
不隶属于 StackOverflow