You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中replaceAll方法出现错误替换问题求助

Java replaceAll 替换异常问题解决

问题根源在于replaceAll的第一个参数是正则表达式,而非普通字符串。正则中的.是特殊元字符,会匹配任意单个字符,所以你写的.com会匹配「任意字符 + c + o + m」的组合。

原字符串里的Welcome包含lcom(l + c + o + m),正好符合这个匹配规则,因此被替换成.net,导致Welcome变成We.nete。当把c改成大写C后,lCom不满足.com的大小写匹配(正则默认区分大小写),所以不会被错误替换。

两种解决方法:

  • 方法一:使用replace方法替代replaceAll
    replace是普通字符串替换,无需处理正则特殊字符,修改后代码:

    public static void main(String[] args) {
        String Str = " Welcome to Itpro.com please visit programming.itpro.com";
        System.out.println(Str.replace(".com", ".net"));
    }
    
  • 方法二:转义正则中的特殊字符
    若必须使用replaceAll,需要将.转义为\\.(Java字符串中需用双反斜杠完成转义),匹配真实的点号:

    public static void main(String[] args) {
        String Str = " Welcome to Itpro.com please visit programming.itpro.com";
        System.out.println(Str.replaceAll("\\.com", ".net"));
    }
    

内容的提问来源于stack exchange,提问作者javad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:20:22