替换空格
作者: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); }