Замена Java все квадратные скобки в строке

Я хочу удалить квадратные скобки из строки, но я не знаю как.

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

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

Но мой результат: [Chrissman | 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)
62
задан 21 January 2013 в 20:04

7 ответов

replaceAll метод пытается соответствовать Строковому литералу [], который не существует в String попытка, заменяющая эти объекты отдельно.

String str = "[Chrissman-@1]";
str = str.replaceAll("\\[", "").replaceAll("\\]","");
116
ответ дан 31 October 2019 в 13:08

Ваши соответствия regex (и удаляет), только последующие квадратные скобки. Используйте это вместо этого:

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

, Если Вы только хотите заменить пар скобки промежуточным содержанием, Вы могли бы использовать это:

str = str.replaceAll("\\[(.*?)\\]", "$1");
60
ответ дан 31 October 2019 в 13:08

используйте regex [\\[\\]] -

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

вывод -

Nickname: Chrissman | Power: 1
10
ответ дан 31 October 2019 в 13:08

Вы в настоящее время пытаетесь удалить точный строка [] - две квадратных скобки ни с чем между ними. Вместо этого Вы хотите удалить весь [ и отдельно удалить весь ].

Лично я избегал бы использования replaceAll здесь, поскольку это представляет больше беспорядка из-за regex части - я использовал бы:

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

Только используют методы, которые берут регулярные выражения, если Вы действительно хотите сделать полное сопоставление с образцом. Когда Вы просто хотите заменить все случаи фиксированной строки, replace более просто читать и понять.

(Существуют альтернативные подходы, которые используют форму регулярного выражения и действительно соответствуют шаблонам, но я думаю, что вышеупомянутый код значительно более прост.)

20
ответ дан 31 October 2019 в 13:08

   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
ответ дан 31 October 2019 в 13:08

Можно также сделать это как это:

String data = "[yourdata]";
String regex = "\\[|\\]";
data  = data .replaceAll(regex, "");
System.out.println(data);
6
ответ дан 31 October 2019 в 13:08
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
ответ дан 31 October 2019 в 13:08

Другие вопросы по тегам:

Похожие вопросы: