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

错误示例:
public class PatternTest {

    public static void main(String[] args) {
        String data="这个商品标价$2";
        data=data.replaceAll("(商品)","$3");
        System.out.println(data);
    }
}
执行结果:
执行错误

解决办法:
public class PatternTest {

    public static void main(String[] args) {
        String data="这个商品标价$2";
        data=data.replaceAll("(商品)", Matcher.quoteReplacement("$3"));
        System.out.println(data);
    }
}
执行结果:
       执行结果2

如果需要替换$等正则符号也可以这样
public class PatternTest {

    public static void main(String[] args) {
        String data="这个商品标价$2";
        data=data.replaceAll(Pattern.quote("$"), Matcher.quoteReplacement("¥"));
        System.out.println(data);
    }
}
执行结果:
执行结果3

搞定

评论区域

评论功能已关闭. 提示:评论功能虽已关闭,关闭之前的评论仍然会展示。