77

文字列から角かっこを削除したいのですが、方法がわかりません。

String str = "[Chrissman-@1]";
str = replaceAll("\\[\\]", "");

String[] temp = str.split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);

しかし、私の結果は次のとおりです。1]角括弧は削除されません。

別の regex: を使用してみまし"\\[.*?\\]""\\[\\d+\\]" が、結果は同じで、角括弧が文字列に付いたままです。

編集:

私は試した:

str.replaceAll("]", "");
str.replaceAll("[", "");

そして今、私は得ています:

Exception in thread "Thread-4" java.util.regex.PatternSyntaxException: Unclosed character class near index 0
[
^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
    at java.util.regex.Pattern.sequence(Unknown Source)
    at java.util.regex.Pattern.expr(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.util.regex.Pattern.<init>(Unknown Source)
    at java.util.regex.Pattern.compile(Unknown Source)
    at java.lang.String.replaceAll(Unknown Source)
4

8 に答える 8

155

replaceAllメソッドは、これらの項目を個別に置き換え[]てみてください内に存在しない文字列リテラルを一致させようとしています。String

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
于 2013-01-21T15:43:55.293 に答える
73

正規表現は、後続の角かっこのみに一致(および削除)します。代わりにこれを使用してください:

str = str.replaceAll("\\[|\\]", "");

ブラケットペアをその間のコンテンツにのみ置き換えたい場合は、次を使用できます。

str = str.replaceAll("\\[(.*?)\\]", "$1");
于 2013-01-21T15:44:35.117 に答える
27

現在、正確な文字列[](間に何もない 2 つの角かっこ)を削除しようとしています。代わりに、すべてを削除し[、個別にすべてを削除する必要があります]

個人的にはreplaceAll、正規表現の部分が原因で混乱が生じるため、ここでは使用しないでください。

String replaced = original.replace("[", "").replace("]", "");

本当に完全なパターン マッチングを行いたい場合にのみ、正規表現を取るメソッドを使用してください。固定文字列をすべて置換したいだけの場合は、replace読みやすく理解しやすいです。

(正規表現形式を使用して実際にパターンに一致させる別のアプローチもありますが、上記のコードはかなり単純だと思います。)

于 2013-01-21T15:45:06.757 に答える
12

正規表現を使用[\\[\\]]-

String str = "[Chrissman-@1]";
String[] temp = str.replaceAll("[\\[\\]]", "").split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);

出力 -

Nickname: Chrissman | Power: 1
于 2013-01-21T15:45:59.130 に答える
7

You may also do it like this:

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
于 2014-05-05T05:55:45.157 に答える