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


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

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

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

но мой результат: [Chrissman | 1] Квадратные скобки не снимаются.

Я попытался использовать другое регулярное выражение:"[.*?]","[d+]" но результат тот же, квадратные скобки по-прежнему прикреплены к строке.

Edit:

пробовал:

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)
7 52

7 ответов:

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

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

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

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

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

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

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

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

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

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

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

использовать regex [\[\]] -

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

выход -

Nickname: Chrissman | Power: 1

вы также можете сделать это так:

String data = "[yourdata]";
String regex = "\[|\]";
data  = data .replaceAll(regex, "");
System.out.println(data);

Use this line:) String result = strCurBal.replaceAll("[(" what ever u need to remove ")]", ""); 

                String strCurBal = "(+)3428";
                Log.e(" before omit ", strCurBal);
                String result = strCurBal.replaceAll("[()]", "");
                Log.e(" Result Omit ", result);

                o/p :
                before omit : (+)3428
                Result Omit :  +3428


            String finalVal = result.replaceAll("[+]", "");
            Log.e("finalVal  ", finalVal);

            finalVal : 3428
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);