0x01 背景
在我们实际开发过程中,难免会遇到字符串替换问题,但String工具类中给我们提供的只有replace,replaceAll,replaceFirst三种方法供我们使用,小编在实际开发过程中遇到业务需求,需要替换字符串第二个位置的固定字符串,但是简单的使用上面的三种方法又不能很好的实现。所以,现在记录一下,该如何替换。
0x02 代码
public class TestRegExp {
public static void main(String[] args) {
String str="/test/test1?type=1?typefile=1&label=2&name=&code=sord=asc";
String result1 = str.replaceAll("(\\?)(.*?)(\\?)(.*?)", "$1$2&$4");
System.out.println("原字符串:" + str);
System.out.println("替换后:" + result1);
}
}
0x03总结
在我们上面进行字符串替换的时候,我们采取replaceAll中的其中一个形式,那通过对字符串进行分析,需要替换第二个“?",所以我们可以通过正则表达式的分组,进行替换,这样我们就能得到我们想要的结果,此处还有一个好处就是,reaplaceAll在进行替换的时候会首先检验字符串是否符合regExpression,如果不符,则返回的是原字符串,如果符合,则替换成功。