gpt4 book ai didi

java - 扫描器 useDelimiter 字符串参数?

转载 作者:行者123 更新时间:2023-12-01 09:55:57 24 4
gpt4 key购买 nike

我需要将特定 Scanner 对象的分隔符设置为:换行符、任意数量的连续空格、逗号字符和美元符号字符。

我正在使用此代码:

Scanner s = new Scanner("just\ndo      it$bro,tm");
s.useDelimiter("\\n|,|\\s*\\s|\\$");
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());

它的输出是:

just newline
do newline
it newline
bro newline
tm newline

它按照预期将所需的字符标记为分隔符,但是当遇到两个连续的分隔符时,System.out.println(s.next()); 会立即输出一个新行。

例如,如果 Scanner s = new Scanner("just\ndo it$bro,tm"); 更改为 Scanner s = new Scanner("just\ndo , it$ bro,tm"); 输出变为:

just newline
do newline
newline
newline
it newline

System.out.println(s.next()); 当发现逗号后跟空格时输出一个新行,当发现逗号后跟空格时输出另一个新行。我该如何解决这个问题,使其将连续的分隔符视为一个分隔符?

我的意思是产生像第一个输出一样的输出。

最佳答案

在正则表达式末尾添加一个 + 以指示您可以有多个连续的分隔符,如下所示:

Scanner s = new Scanner("just\ndo   ,   it$bro,tm");
s.useDelimiter("(,|\\s|\\$)+");
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());

输出:

just
do
it
bro
tm

注意: 无需在正则表达式中使用 \\n\\$,仅使用 \\$ 因为它更通用

关于java - 扫描器 useDelimiter 字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37218968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com