String的replaceAll你真的会用吗?

在Java的字符串替换中,最近遇到一个问题,就是替换的目标字符串中包含了正则表达式的符号,导致报错。

错误示例:

public class ReplaceAllTest {

    public static void main(String[] args) {
        String data="小明今天放学回家[遇到一个小偷在偷自行车";
        data=data.replaceAll("(遇到)","抓住");
        System.out.println(data);
    }
}

执行结果: 

 解决办法:

//Pattern.quote和Matcher.quoteReplacement防止特殊字符如[导致报错,原理特殊字符,在正则里需要加\\反斜杆进行转义
surplusStr = surplusStr.replaceAll(Pattern.quote(conditionStr),  Matcher.quoteReplacement(""));

原理:replaceAll底层使用正则进行替换字符串,所以若特殊符号不进行转义就会导致正则替换的时候报错,需转义

猜你喜欢

转载自blog.csdn.net/qq_38623939/article/details/129839301