如何找到并替换字符串中的'['?

时间:2016-05-09 11:58:50

标签: java android regex string

我有一个字符串“['MET','MISSED']”。在这里,我想替换“[to [and]”to]。我在我的String中使用了转义序列,如

wkJsonStr.replaceAll("\"\\[","[");

wkJsonStr.replaceAll("\\]\"","]");

但以上都没有奏效。在'watch'中,我编辑了

wkJsonStr.replaceAll("\"[","["); 

它有效。但是在我的Android Studio编辑器中,不允许使用此表达式。我得到“Unclosed character class”。

我期待替换后的字符串像['MET','MISSED']。我想单独删除第一个和最后一个引号,我想通过replaceAll方法实现它。

4 个答案:

答案 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("\\]\"","]");