Java中的Replace和ReplaceAll的区别

        replace和replaceAll是都是String类中提供的两种用于字符/字符串替换的方法,从字面意思理解,replace表示替换单个匹配项,而replaceAll表示替换所有匹配项;实际上并不是这样子的,replace和replaceAll都是替换所有匹配项,replace是非正则模式替换,replaceAll是正则模式替换

      String类中一共提供了四种替换字符/字符串相关的方法,分别是replace的两个重载方法、replaceAll方法和replaceFirst方法

replace(字符):全部匹配的都替换;参数为字符(char)类型;不调用Pattern和Matcher方法。
replace(字串接口实现类):全部匹配的都替换;参数为字串接口实现类(如String);不支持正则匹配,调用Pattern(不匹配正则模式)和Matcher的replaceAll方法。
replaceAll:全部匹配的都替换,参数为String类型,支持正则匹配;调用Pattern(匹配正则模式)和Matcher的replaceAll方法。
replaceFirst:第一个匹配到的替换,参数为String类型,支持正则匹配;调用Pattern(匹配正则模式)和Matcher的replaceFirst方法。

主要相关的类主要有String、Pattern、Matcher

对应的调用关系图:

    

使用replaceAll和replaceFirst方法需要注意,参数要为正确的正则表达式,如果不正确会导致替换失败甚至报错。

比如下面的代码:

        String b = "这才是进度款发动机(ssdc)";
        String regexp = "这才是进度款发动机ssdc)";
        String vb = b.replaceAll(regexp, "AA");
        System.out.println(vb);

执行的时候会提示:

java.util.regex.PatternSyntaxException: Unmatched closing ‘)’ near index 12 

提示我们正则表达式有误,没有正确的使用’)’进行关闭。所以使用replaceAll和replaceFirst是需要注意自己的正则表达式有没有写对的,特别是regexp是用户输入的时候,如果包含正则表达式的特殊符号,很容易报错。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月23日
下一篇 2023年12月23日

相关推荐