Saw*_*yer 2 java java.util.scanner
为什么以下代码返回false?
Scanner sc = new Scanner("-v ");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());
Run Code Online (Sandbox Code Playgroud)
奇怪的是它-[a-zA-Z]//s+会回归真实.
我也无法理解为什么这会返回true:
Scanner sc = new Scanner(" -v");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());
Run Code Online (Sandbox Code Playgroud)
扫描仪用于将字符串分解为标记.分隔符是分隔标记之间.分隔符与扫描仪不匹配; 他们被丢弃了.你告诉扫描仪-[a-zA-Z]\\s+是一个分隔符,因为-v匹配正则表达式它跳过它.
如果您正在寻找与正则表达式匹配的字符串,请使用String.matches().
如果您的目标确实是将字符串拆分为标记,那么您也可以考虑使用String.split(),这有时更方便使用.