如何用(从字符串中)替换子字符串

时间:2015-08-20 07:47:43

标签: java android string replace

我有一个像

这样的字符串
Want to Start (A) Programming and (B) Designing

我想将(A)替换为\n(A),将(B)替换为\n(B) 所以,预期的结果就像

Want to Start
(A) Programming and 
(B) Designing

我试过

stringcontent=stringcontent.replaceAll("(A)", "\n(A)");

它不起作用。在谷歌搜索后,我意识到它是因为字符串中的特殊字符()

任何可能的方法来解决这个问题?

3 个答案:

答案 0 :(得分:4)

这个正则表达式

String a = "Want to Start (A) Programming and (B) Designing";
String b = a.replaceAll("\\(", "\n\\(");
System.out.println(b);

结果

Want to Start 
(A) Programming and 
(B) Designing

只需使用\\转义括号,就可以了。

编辑: 更具体,如下所述

a.replaceAll("(\\([AB]\\))", "\n$1");仅匹配(A)和(B)或

a.replaceAll("(\\(\\w\\))", "\n$1");匹配任何(*)(字符)

答案 1 :(得分:0)

你必须逃避特殊字符:

stringcontent=stringcontent.replaceAll("\\(A\\)", "\n(A)");

答案 2 :(得分:0)

作为第一个参数方法,replaceAll需要正则表达式,我强烈建议你阅读它们。

stringcontent.replaceAll("\\((?=\\w\\))", "\n(");

修改

建议的答案使用硬编码的字母进行检查和替换(或假设大括号中没有文字)。我的回答使用\ w通配符与字母匹配以及高级检查,确保字母和右括号跟随您的左大括号。 什么答案取决于你。