简单说明:
replace方法用于将字符串中指定位置的某一个字符替换为自己输入的字符或者字符串。
replaceAll方法用于将出现在某个字符串中所有的指定字符替换为自己输入的字符或者字符串。
import java.util.Scanner;
public class replacespace {
public static char[] replace(char[] chars,int start,int end,String str) {
//获取要操作的数组的长度
int count = chars.length;
//获取要替换的字符串长度
int len = str.length();
//替换成功后的数组所需要的长度的计算
int newCount = count+len-(end-start);
//创建新的数组,用于存储替换后的结果
char[] newChar = new char[newCount];
//将原数组的末尾一部分复制到新数组中
System.arraycopy(chars, end, newChar, start+len,count-end);
//将替换用的字符串复制到新数组中
str.getChars(0, len, newChar, start);
//将原数组的头部复制到新数组中
System.arraycopy(chars, 0, newChar, 0, start);
//返回处理后的新数组
return newChar;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//将输入的字符串转换为字符数组
char[] chars = in.nextLine().toCharArray();
//遍历输入的字符串生成的字符数组
for(int i=0; i<chars.length; i++) {
//选择被替换掉的字符是‘空格’
if(chars[i] == ' ') {
//将每一次替换成功后的结果作为新的数组继续调用replace函数,直到数组中没有‘空格’
chars = replace(chars, i, i+1, "&");//将空格替换为&
}
}
System.out.println(chars);
}
}
输出结果:
i love you
i&love&you
看过源码的小伙伴都知道,上面的replace方法基本上和源码一致,学习源码真的是收获蛮大的。
而replaceAll方法的实现其实有水分,原因在于没有封装,以后再说吧,现在我也不会。。。
有问题欢迎批评指正!