我想从字符串中删除方括号,但我不知道如何.
String str = "[Chrissman-@1]";
str = replaceAll("\\[\\]", "");
String[] temp = str.split("-@");
System.out.println("Nickname: " + temp[0] + " | Power: " + temp[1]);
Run Code Online (Sandbox Code Playgroud)
但我的结果是:[克里斯曼| 1]方括号不会被删除.
我试着用不同的正则表达式:"\\[.*?\\]","\\[\\d+\\]"
但结果是一样的,方括号仍然附着在弦上.
编辑:
我试过了:
str.replaceAll("]", "");
str.replaceAll("[", "");
Run Code Online (Sandbox Code Playgroud)
现在我得到了:
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)
Run Code Online (Sandbox Code Playgroud) if(possTape.matches("{\\(\\d+,\"[^:=;@\"\\)\\(\\{\\}\\[\\]]+\"\\)(,\\(\\d+,\"[^:=;@\"\\)\\(\\{\\}\\[\\]]+\"\\))+}"))
Run Code Online (Sandbox Code Playgroud)
但是,这是什么意思?我已经在regexpal上测试了这个正则表达式(进行了调整,因此它可以用作Java)但是我没有看到哪里有非法重复?
我正在尝试替换一个字符串,例如:
Hello, my name is ${name}. I am ${age} years old.
Run Code Online (Sandbox Code Playgroud)
和
Hello, my name is Johannes. I am 22 years old.
Run Code Online (Sandbox Code Playgroud)
变量存储在 HashMap 中。到目前为止我的代码:
private void replace() {
HashMap<String, String> replacements = new HashMap<String, String>();
replacements.put("name", "Johannes");
replacements.put("age", "22");
String text = "Hello, my name is {name}. I am {age} years old.";
Pattern pattern = Pattern.compile("\\{(.+?)\\}");
Matcher matcher = pattern.matcher(text);
StringBuilder builder = new StringBuilder();
int i = 0;
while (matcher.find()) {
String replacement = replacements.get(matcher.group(1));
builder.append(text.substring(i, matcher.start()));
if …Run Code Online (Sandbox Code Playgroud)