一、替换单个字符
replace()方法
1.replace()方法中的参数为字符char类型
//使IP地址无效化,即将IP中的“.”替换为“[.]”
//只能用一个字符替换一个字符,“[.]”是一个字符串,所以不能使用char类型作为replace方法的参数
String IP="127.0.0.1"; String ret=IP.replace('.','#'); System.out.println(ret);
输出结果:127#0#0#1
2.replace()方法中的参数为字符charSequence类型
//用一个字符串来替换一个字符串
Stringsip="127.0.0.1"; String ret1=ip.replace(".", "[.]"); System.out.println("ret1:"+ret1);
输出结果:ret1:127[.]0[.]0[.]1
二、替换多个字符
replace()方法
//将“,”和“.”和“$”替换为“#” String s="A,B.C,D.E,F,G$H,I"; String ret =s.replace(",","#").replace(".","#").replace("$","#"); System.out.println("ret:"+ret);
输出结果:ret:A#B#C#D#E#F#G#H#I
用replace()方法只能一个字符一个字符的替换,当我们想要替换多个字符时很麻烦
replaceAll()方法
参数一:replaceAll()方法使用正则表达式(regex)进行字符的匹配,使用[\,\.\$]可以匹配到多个字符内容
[\,\.\$]:匹配到“,”或“.”或“$”
参数二:要替换的目标字符
例1:
String s="A,B.C,D.E,F,G$H,I"; String ret1=s.replaceAll("[\,\.\$]", "#"); System.out.println("ret1:"+ret1);
输出结果:ret1:A#B#C#D#E#F#G#H#I
例2:
String s1="A,,B..C,D.E,F,G$H,I"; //[\,\.\$]:匹配到不连续的单个字符 //[\,\.\$]+:匹配到多个连续的字符 String ret2=s1.replaceAll("[\,\.\$]", "#"); String ret3=s1.replaceAll("[\,\.\$]+", "#"); System.out.println("ret4:"+ret2); System.out.println("ret2:"+ret3);
输出结果:ret2:A##B##C#D#E#F#G#H#I(一个“,”或者一个“.”匹配一个“#”)
ret3:A#B#C#D#E#F#G#H#I(连续多个“,”或者一个“.”匹配一个“#”)
例3:
String s1="A,,B..C,D.E,F,G$H,I"; //“.”:代表一个正则表达式,可以替换任何字符(.有特殊含义) String ret5=s1.replaceAll(".", "#"); System.out.println("ret5:"+ret5); //\:转义字符 //“\.”:代表一个普通字符“.”,仅匹配字符“.” String ret6=s1.replaceAll("\.", "#"); System.out.println("ret6:"+ret6);
输出结果:ret5:###################
ret6:A,,B##C,D#E,F,G$H,I
要查找特殊字符时必须用转义字符\,否则可能会被视为有特殊含义的正则表达式
例4:
[A-Z]+:匹配连续多个大写字母,替换为“#”
String s2="AAA,,B..C,DD.E,F,G$H,I"; //匹配多个连续的大写字母 String ret7=s2.replaceAll("[A-Z]+", "#"); System.out.println("ret7:"+ret7);
输出结果:ret7:#,#.#,#.#,#,#$#,#