在java中使用扫描仪,如何在string不是正则模式的情况下hasnext(累积)?

StackOverflow https://stackoverflow.com/questions/1506249

  •  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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top