1

what is wrong in the following code?

String selectedCountriesStr = countries.replaceAll("[", "").replaceAll("]", "").trim();
String[] selectedCountriesArr = selectedCountriesStr.split(",");

Input String [10000,20000,304050,766666]

Getting error java.util.regex.PatternSyntaxException: Unclosed character class near index 0

4

3 に答える 3

8

replaceAll()は最初の引数を正規表現として解釈するため、角括弧をエスケープする必要があります。

replaceAll("\\[", "")
            ^^

エラー メッセージが示すように、 は正規表現の文字クラスに使用されるためです。"\["無効なエスケープ シーケンスになるため、2 つのバックスラッシュが必要です。バックスラッシュはエスケープされるため、正規表現エンジンはバックスラッシュを 1 つだけ受け取ります。

また、使用できます

replace("[", "")

また、指定された CharSequence のすべてのオカレンスをそのまま置き換えます。

詳しくはJavaDocを参照してください。

于 2013-06-06T10:56:23.763 に答える
6

角かっこは正規表現のメタ文字です。バックスラッシュを前に付ける必要があります。

.replaceAll("\\[", "").replaceAll("\\]", "")

また、これは単純な文字列置換であるため、以下を使用することをお勧めします.replace()

.replace("[", "").replace("]", "")
于 2013-06-06T10:56:28.383 に答える
-1
     String str = "hi,hello,abc,example,problems";
    String[] splits = str.split(",");

    System.out.println("splits.size: " + splits.length);

    for(String asset: splits){
    System.out.println(asset);

    }

Split 関数は、このように文字列を簡単に分割します

于 2013-06-06T11:04:35.233 に答える