其实两者都是字符串替换方法,都可以实现替换字符串符合规则的部分为指定字符串,并且是全部替换,但两者有本质区别
- replace是字符串匹配替换
- replaceAll是正则表达式替换
例:
String str = "hello world/!(20181112)";
String strReplace = str.replace("hello world/!(20181112)", "ol");
String strReplaceAll = str.replaceAll("hello world/!(20181112)", "ol");
System.out.println(strReplace);
System.out.println(strReplaceAll);
出现的原因是因为replace的第一个参数是一个正则表达式的字符串,因为该字符串未进行转义,所以匹配出现了问题,当我们改成以下处理,则正则表达式的替换也会生效:
String strReplaceAll = str.replaceAll("hello world/!\\(20181112\\)", "ol");
所以,由此我们可以看出,因为正则表达式会额外做一些操作,因此必然比字符串的匹配效率要低,因此遇到常见的字符串替换还是优先使用replace。