Java中replaceAll方法出现错误替换问题求助
Java replaceAll 替换异常问题解决
问题根源在于replaceAll的第一个参数是正则表达式,而非普通字符串。正则中的.是特殊元字符,会匹配任意单个字符,所以你写的.com会匹配「任意字符 + c + o + m」的组合。
原字符串里的Welcome包含lcom(l + c + o + m),正好符合这个匹配规则,因此被替换成.net,导致Welcome变成We.nete。当把c改成大写C后,lCom不满足.com的大小写匹配(正则默认区分大小写),所以不会被错误替换。
两种解决方法:
方法一:使用
replace方法替代replaceAllreplace是普通字符串替换,无需处理正则特殊字符,修改后代码: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
相关产品推荐
相关产品推荐

