简体   繁体   English

Scanner.useDelimiter 未按预期工作

[英]Scanner.useDelimiter not working as expected

The actual answer is supposed to be stack and overflow in two separate lines for input stack.overflow ;对于输入stack.overflow ,实际的答案应该是stackoverflow在两个单独的行中; delimiter used is ".".使用的分隔符是“.”。 Nothing is shown in the output:输出中没有显示任何内容:

Scanner p = new Scanner(System.in);

p.useDelimiter(".");

System.out.println("delimiter is "+ p.delimiter());

\\this above line is producing expected output

while(p.hasNext()){
    System.out.println(p.next());
}

For input stack.overflow and delimiter "."对于输入stack.overflow和分隔符“.” expected output is预期输出是

stack
overflow
p.useDelimiter(".");

Delimiter is a regex, and .分隔符是一个正则表达式,并且. in regex means "every possible character".在正则表达式中的意思是“每个可能的字符”。 You are using "every possible character" as delimiter, making Scanner return everything between each pair of characters, which will result in a lot of empty strings.您使用“每个可能的字符”作为分隔符,使 Scanner 返回每对字符之间的所有内容,这将导致大量空字符串。

Escape the dot instead:转义点:

p.useDelimiter("\\.");

Output:输出:

delimiter is \.
stack
overflow

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM