package test; public class ReplaceTest { public static void main(String[] args) { String str1="notice/PublishingImages/第26期(20181112).pdf"; String str2="notice/PublishingImages/第26期(20181112).pdf"; String str3="123456.pdf"; System.out.println("replace:"+str1.replace(str2, str3));//结果:123456.pdf System.out.println("replaceAll:"+str1.replaceAll(str2, str3));//结果:notice/PublishingImages/第26期(20181112).pdf //此时replaceAll并未出现期待的结果。为什么? //replace和replaceAll相同点和区别? //1、相同点:替换所有匹配的字符串(都是替换所有) //2、不同点: //replace支持字符替换,字符串替换 //replaceAll是正则表达式替换 String t1="\"; System.out.println(t1.replace("\", "斜杠")); System.out.println(t1.replaceAll("\\", "斜杠")); try{ System.out.println(t1.replaceAll("\", "斜杠"));//正则表达式异常 }catch(Exception e){ System.out.println(e.getMessage()); } //那么notice/PublishingImages/第26期(20181112).pdf怎么用replaceAll替换成123456.pdf呢? String str2_new="notice/PublishingImages/第26期\(20181112\)\.pdf"; //注意正则表达式对特殊字符的转义:'$', '(', ')', '*', '+', '.', '[', ']', '?', '\', '^', '{', '}', '|' System.out.println("replaceAll:"+str1.replaceAll(str2_new, str3)); } }