在Java中分割多个分隔符

16
我该如何根据字符串中的分隔符拆分句子并计算单词的频率?
 String delimiters = "\t,;.?!-:@[](){}_*/";

我的文本文件是:

Billy_Reeves

Smorz

Nationalist_Left_-_Youth

Ancient_Greek_units_of_measurement

Jiuting_(Shanghai_Metro)

Blodgett,_MO

Baekjeong

Matt_Brinkman

National_Vietnam_Veterans_Art_Museum

2
你尝试了什么? - Thomas
2个回答

13

你似乎知道split使用正则表达式,但是忘记了一些正则表达式中的特殊字符可能需要转义。在当前代码中,这段代码将抛出PatternSyntaxException异常,因为它没有正确创建正则表达式。 - Pshemo
已经修复了 @Pshemo - AMB

3

split方法的参数是正则表达式,所以为了使用多个分隔符,需要输入一个由OR正则运算符分隔的正则表达式,或者使用字符类(仅当分隔符是单个字符时)。

使用OR运算符:

String delimiters = "\\t|,|;|\\.|\\?|!|-|:|@|\\[|\\]|\\(|\\)|\\{|\\}|_|\\*|/";

使用字符类:

String delimiters = "[-\\t,;.?!:@\\[\\](){}_*/]";

正如您所看到的,某些字符必须被转义,因为它们是正则表达式元字符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接