替换空格
作者:bin题目:实现一个函数,把字符串中的每个空格替换城”%20″,例如输入”nihao java”,则输出”nihao%20java”。
在web编程里面很常见,url一些特殊字符需要做替换。
粗暴的方法就是遍历原字符数组,然后添加到新数组,并且动态到增加新数组长度。
但是这样会导致新数组扩容时不断在复制,效率很低
所以我们可以先搞清楚字符串中有多少个空格,新数组长度 = 老数组长度 + 空格数量 * 2
代码如下:
@Test
public void ttt(){
String a = "nihao java";
System.out.println(remove_space(a));
}
public String remove_space(String oldStr){
char[] oldArr = oldStr.toCharArray();
int spaceCount = 0;
char space = ' ';
for (int i = 0; i < oldArr.length; i++) {
if (space == oldArr[i]) {
spaceCount++;
}
}
char[] newArr = new char[oldArr.length + spaceCount * 2];
int index = 0;
for (int i = 0; i < oldArr.length; i++) {
if (space == oldArr[i]) {
newArr[index] = '%';
newArr[index + 1] = '2';
newArr[index + 2] = '0';
index += 3;
}else {
newArr[index] = oldArr[i];
index ++;
}
}
return String.valueOf(newArr);
}