0

もっと簡単な解決策を探しています。私はJavaを初めて使用するので、少し助けが必要です。この']、['によってStringをString[]に分割しようとしています。問題は、Javaが正規表現のようにこれらを取得しようとしていることです。私はそれが十分ではないため、使用したくありません。文字列をこれらの3文字で分割したい"]、["; これが私のコードです:

String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(token);

そして、ここにエラー出力があります:スレッド "AWT-EventQueue-0"の例外java.util.regex.PatternSyntaxException:インデックス2の近くの閉じられていない文字クラス]、[...これを機能させる方法の提案はありますか?

PS。文字列を分割する他の方法はありますか?この正規表現はあまり好きではありません。私はQtとC#を使用してきましたが、どちらの場所でもこの通常の式から逃れる方法があります。どうもありがとう!

4

3 に答える 3

5

「\]\,\[」が必要です。

String usefulData = ...;
String[] list = usefulData.split("\\],\\[");

これは、[]が RegEx の特殊文字であるためです。\\通常の文字として使用するには、 でエスケープする必要があります。

于 2012-10-15T20:43:55.517 に答える
4

Pattern#quoteメソッドを使用して文字列を作成できます。

そうすればescape、特殊文字にバックスラッシュを付ける必要がなくなります。Pattern.quote文字列内のすべてspecial charactersを文字列リテラルのように動作させます: -

String usefulData = "[a],[b],[c,d]";
String token = Pattern.quote("],[");
String[] list = usefulData.split(token);

for (String val: list) {
    System.out.println(val.replaceAll("\\[|\\]", ""));
}

出力: -

a
b
c,d
于 2012-10-15T20:46:30.337 に答える
2
String usefulData = ...;
String[] list = null;
String token = "],[";
list = usefulData.split(java.util.regex.Pattern.quote(token));
于 2012-10-15T20:48:02.163 に答える