在Java中使用多个分隔符拆分

时间:2016-12-20 17:09:50

标签: java split count delimiter frequency

如何根据字符串中的分隔符拆分句子并计算单词的频率?

Billy_Reeves

Smorz

Nationalist_Left_-_Youth

Ancient_Greek_units_of_measurement

Jiuting_(Shanghai_Metro)

Blodgett,_MO

Baekjeong

Matt_Brinkman

National_Vietnam_Veterans_Art_Museum

我的文字文件是:

BufferedReader br = null;
            int index=0;
             String sCurrentLine;
                br = new BufferedReader(new FileReader(fileName));//file name with path

                while ((sCurrentLine = br.readLine()) != null) 
                {

                    for(int i=0; i<sCurrentLine.length(); i++)
                    {
                        for(int j=0; j<delimiters.length(); j++)
                        {
                            if(sCurrentLine.charAt(i) == delimiters.charAt(j))
                            {
                                int startIndex = 0;
                                int endIndex = i;

                                String subStr=sCurrentLine.substring(0, endIndex);
                                String subStr2=sCurrentLine.substring(endIndex+1,sCurrentLine.length());

                                sCurrentLine = subStr.concat(subStr2);
                            }
                        }
                    }

                }

我找到了自己的解决方案,这可能会对其他人有所帮助:

#include two.h

void foo(){
  printf("the value is %f", bar(1));
}

2 个答案:

答案 0 :(得分:7)

尝试

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

另外

Use String.split() with multiple delimiters

答案 1 :(得分:3)

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

使用OR运算符:

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

使用字符类:

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

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