我正在使用多个分隔符拆分字符串。 分隔符是:
, . @ ? ! _ ' and white space etc.
以下是我的代码:
String[] tokens = s.split("[!|?|,|.|_|'|@ |\\s]");
输入:
他是一个非常好的男孩,不是吗?
拆分后的预期输出为:10个令牌
他
是
一个
很
很
好
男孩
ISN
Ť
他
但是我得到的输出低于11:令牌
他
是
一个
很
很
好
男孩ISN
Ť
他
因为两个分隔符的空格和逗号是相邻的,所以它给出了11个令牌。如何获得预期的产出?
答案 0 :(得分:3)
如果要避免多个连续分隔符导致空字符串,可以使用+
来查找组合
s.split("[,.@?!_'\\s]+")
注意: - 正如我在评论中提到的,字符类本身作为字符的OR
条件。因此,不需要在字符类中使用|
来实现交替,因为它将字面上匹配|
。
答案 1 :(得分:3)
要匹配多个连续分隔符,请使用+
:
s.split("[,.@?!_'\\s]+");
您应该考虑使用的另一个正则表达式是:
s.split("[\\W_]+");
这将拆分,以便将任何非单词字符视为分隔符。您的问题没有指定,但它也有您期望的输出。