#java
#java
Вопрос:
Я пытаюсь заменить все квадратные скобки в моей строке.
Это моя программа
package com;
import java.util.ArrayList;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
public class Teste {
/**
* @param args
* @throws JSONException
*/
public static void main(String[] args) throws JSONException {
String str = "[Fountain#Apple#Big(7)]";
str.replaceAll("[", "").replace("]", "");
System.out.println(str);
}
}
Но я получаю
Exception in thread "main" 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)
at com.Teste.main(Teste.java:19)
Может кто-нибудь, пожалуйста, скажите мне, как заменить все квадратные скобки??
Ответ №1:
String.replaceAll
использует шаблон регулярных выражений, но вам вообще не нужны регулярные выражения. Вы можете использовать:
str = str.replace("[", "").replace("]", "");
Или вы могли бы использовать регулярное выражение, если хотите, заменив оба за один раз:
str = str.replaceAll("[\[\]]", "");
Это говорит о том, что «замените любой символ в наборе (открытая квадратная скобка, закрытая квадратная скобка) пустой строкой. Это делается для того \
, чтобы избежать квадратных скобок внутри набора.
Обратите внимание, что вам нужно использовать результат replace
(или replaceAll
) — строки неизменяемы в Java, поэтому любые методы, подобные replace
не изменяют существующую строку, они возвращают ссылку на новую строку с соответствующими изменениями.