Javaで複数の区切り文字で分割[終了]

Split with multiple delimiters in Java [closed]


質問 written by Büşra GÜL @2016-12-21 18:38:06Z

: 13 : 2 : 33

文字列内の区切り文字に関して文を分割し、単語の頻度をカウントするにはどうすればよいですか?

 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

私は自分の解決策を見つけるかもしれませんが、これは他の人に役立つでしょう

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);
                            }
                        }
                    }

                }
コメント 1

何をしようとしましたか?

written by トーマス @2016-12-20 17:14:35Z

回答 1 written by Community @2017-05-23 12:26:05Z
7

で試す

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

また

複数の区切り文字でString.split()を使用します

コメント 1

splitは正規表現を使用することを知っているようですが、正規表現の一部の文字は特殊であり、エスケープが必要な場合があることを忘れていました。現在の形式では、このコードは適切に作成された正規表現ではないため、PatternSyntaxExceptionをスローします。

written by プシェモ16 @2016-12-21 19:07:09Z

コメント 2

現在修正済み@Pshemo

written by AMB @2016-12-22 09:54:44Z

回答 2 written by Pshemo @2016-12-21 19:08:32Z
3

splitメソッドは引数として正規表現を使用するため、複数の区切り文字を使用するには、OR正規表現演算子または文字クラスを使用して区切られた正規表現を入力する必要があります(区切り文字が単一文字の場合のみ)。

OR演算子を使用:

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

文字クラスの使用:

Using the character class:

ご覧のとおり、一部の文字は正規表現のメタ文字であるため、エスケープする必要があります。