web-dev-qa-db-ja.com

Java文字列内のすべての角括弧を置き換えます

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

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

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

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

別の正規表現"\\[.*?\\]""\\[\\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)
61

ReplaceAllメソッドは、String内に存在しない文字列リテラル[]の照合を試みています。これらのアイテムを個別に置き換えてみてください。

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

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

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

中間のコンテンツでブラケットペアのみを置換する場合、これを使用できます。

str = str.replaceAll("\\[(.*?)\\]", "$1");
58
Bergi

現在、exact string []-間に何もない2つの角括弧を削除しようとしています。代わりに、すべての[を削除し、すべての]を個別に削除します。

個人的には、ここではreplaceAllを使用することを避けます。正規表現の部分により混乱が生じるためです。

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

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

(正規表現形式を使用し、実際にパターンに一致する代替アプローチがありますが、上記のコードは非常に簡単だと思います。)

20
Jon Skeet

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

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

出力-

Nickname: Chrissman | Power: 1
10

次のようにすることもできます。

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
6
Xar E Ahmer
   Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove ")]", "");

    String strCurBal = "(+)3428";
    Log.e("Agilanbu before omit ", strCurBal);
    String result = strCurBal.replaceAll("[()]", ""); // () removing special characters from string
    Log.e("Agilanbu after omit ", result);
   
    o/p :
    Agilanbu before omit : (+)3428
    Agilanbu after omit :  +3428

    String finalVal = result.replaceAll("[+]", ""); // + removing special characters from string
    Log.e("Agilanbu finalVal  ", finalVal);
    o/p
    Agilanbu finalVal : 3428
            
    String finalVal1 = result.replaceAll("[+]", "-"); // insert | append | replace the special characters from string
    Log.e("Agilanbu finalVal  ", finalVal1);
    o/p
    Agilanbu finalVal : -3428  // replacing the + symbol to -
1
Agilanbu
String str, str1;
Scanner sc = new Scanner(System.in);

System.out.print("Enter a String : ");
str = sc.nextLine();


str1 = str.replaceAll("[aeiouAEIOU]", "");



System.out.print(str1);
0
Anmol Devta