字符串替换
在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace()、replaceFirst() 和 replaceAll()。
1. replace(CharSequence target,CharSequence replacement)
该方法可以实现将指定的字符序列替换成新的字符序列。CharSequence 是一个接口, 代表一个可读的字符序列, 可以直接将字符串当成参数。
语法如下:
str. replace(oldstr, newstr);
str: 任意字符串。
oldstr: 要被替换的字符序列。
newstr: 替换后的字符序列。
说明:
replace()方法返回的是一个新的字符串。如果字符串 str 中没有找到需要被替换的子字符序列oldstr,则将原字符串返回。不支持正则表达式。
将字符串中"Let it go!"中的"go"换成"do"。
public class StringReplace (
public static void main(String[] args) {
String str="Let it go!";
String restr=str. replace("go", "do");
System, out. println("字符串 str替换之后的效果: "+restr);
字符串str替换之后的效果:Let it do!
如果要替换的字符oldstr在字符串中重复出现多次, replace()方法会将所有 oldstr全部替换成newstr。
String str = "java project";
String str2 = str. replace("j","J");
此时, str2的值为 Java proJect。
需要注意的是, 要替换的字符oldstr的大小写要与原字符串中字符的大小写保持一致, 否则不能成功地替换。例如,上面的实例如果写成如下语句: 则不能成功替换。说明字符串是要区分大小写的。
String str = "java project";
String str3 = str. replace("P","t");
2. replaceAll(String regex, String replacement)
该方法可以实现将指定的字符串替换成新的字符串,支持正则表达式。replaceAll() 方法用于将目标字符串中匹配某正则表达式的所有子字符串替换成新的字符串。
语法如下:
str.replaceAll(regex, replacement);
str: 任意字符串。
regex: 被替换的字符串或正则表达式。
replacement: 替换后的字符串。
正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。如"\\d"表示数字0~9中的任何一个,"\\d"就是元字符。
分别使用replace()方法和 replaceAll()方法,利用正则表达式将字符串中所有的数字替换成“? ”两个方法对正则表达式处理方法不同,一个看作字符本身,另一个可看作转义字符。
public class StringReplaceAll {
public static void main(String(] args) {
String str = "023456abc\\d";// 创建字符串
String restr = str. replace("\\d", "?");// 使用replace()将符合“\\d”表达式的字符串替换“?”
String restrAll=str. replaceAll("\\d","?");// 使用replaceAll()将符合“\\d”表达式的字符串替换“?”
// 输出结果
System. out. println("字符串 str; " + str);
System. out. println("使用replace()替换的结果; " + restr);
System. out. println("使用replaceAll()替换的结果: " + restrAll);
字符串str: 023456abc\\d
使用replace()替换的结果: 023456abc?
使用replaceAll()替换的结果: ??????abc\\d
3. replaceFirst(String regex, String replacement)
该方法可以实现将第一个指定的字符串替换成新的字符串,支持正则表达式。
str. replaceFirst(regex, replacement);
str: 任意字符串。
regex: 第一个被替换的字符串或正则表达式。
replacement: 替换后的字符串。
将字符串中"Let it go!Let it go!Let it go!"前两个"go"换成"do"。
public class StringReplaceFirst {
public static void main(String[] args) {
String str = "Let it go!Let it go!Let it go! ;// 创建字符串
String firststr= str. replaceFirst("go", "do");
String twicestr= firststr.replaceFirst("go", "do");
System. out. println("替换之后的结果是: "+twicestr);
}
}
运行结果:
替换之后的结果是: ILet it do!Let it do!Let it go!