我有一个字符串“['MET','MISSED']”。在这里,我想替换“[to [and]”to]。我在我的String中使用了转义序列,如
wkJsonStr.replaceAll("\"\\[","[");
和
wkJsonStr.replaceAll("\\]\"","]");
但以上都没有奏效。在'watch'中,我编辑了
wkJsonStr.replaceAll("\"[","[");
它有效。但是在我的Android Studio编辑器中,不允许使用此表达式。我得到“Unclosed character class”。
我期待替换后的字符串像['MET','MISSED']。我想单独删除第一个和最后一个引号,我想通过replaceAll方法实现它。
答案 0 :(得分:1)
请记住,字符串在java中是不可变的......
只是调用replace方法将不起作用,你需要指定返回值,否则会丢失。
public static void main(String[] args) {
String wkJsonStr = "\"['MET', 'MISSED']\"";
System.out.println(wkJsonStr);
wkJsonStr = wkJsonStr.replaceAll("\"\\[", "[").replaceAll("\\]\"", "]");
System.out.println(wkJsonStr);
}
这将打印。
“['MET','MISSED']”
['MET','MISSED']
答案 1 :(得分:0)
您可以使用replace
代替replaceAll
,但如果您确实需要使用replaceAll
,则可以执行以下操作:
wkJsonStr.replaceAll("\"\\Q[\\E","[").replaceAll("\\Q]\\E\"","]")
在这里,
\"
字面上表示"
\\Q
和\\E
之间的部分进行了字面处理。即,
\\Q[\\E
表示[
\\Q]\\E
表示]
答案 2 :(得分:0)
我同意@WiktorStribiżew的评论。你应该像这样声明你的字符串:
String str = "\"['MET', 'MISSED']\""; // like this your editor will not give an error
str = str.replace("\"[","[");
str = str.replace("]\"","]");
textview.setText(str);
答案 3 :(得分:0)
我终于意识到isssue不是正则表达式。它是我正在使用的变量。当我逐个替换它时,它不会将结果转发到下一步。所以我已经将值赋给变量,现在它正在工作。
String firstResult = wkJsonStr.replaceAll("\"\\[","[");
和
String result = firstResult.replaceAll("\\]\"","]");
正在为我工作。或者这一步将有所作为。
String result= wkJsonStr.replaceAll("\"\\[","[").replaceAll("\\]\"","]");