请实现一个函数,将一个字符串中的每一个空格替换成“%20”。例如,当字符串为We Are Happy.则通过替换以后的字符串为We%20Are%20Happy。app
方法一:ide
public String replaceSpace(StringBuffer str) { for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { str = str.replace(i,i,"%20"); } } return str.toString(); }
这种方法是调用自身函数,用起来也很简单。函数
方法二:code
StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { sb.append("%20"); } else { sb.append(str.charAt(i)); } } return sb.toString(); }
这种方法是建立一个新的StringBuffer对象,原理也是调用其自身函数,和方法一相似。对象
方法三:字符串
public String replaceSpace(StringBuffer str) { int len = str.length();//原字符串的长度 int index = len - 1; int sum = 0;//统计须要扩容的长度 for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { sum++; } } int newLen = str.length() + sum * 2;//新字符串的总长 int newIndex = newLen - 1; str.setLength(newLen);//将原字符串的长度更改成新的长度 while (newIndex > index){ if (str.charAt(index) == ' ') { str.setCharAt(newIndex--, '0');//若是是从前日后插入字符,那么空格后面的每一个字符都要日后挪,因此咱们选择从后往前插入 str.setCharAt(newIndex--, '2'); str.setCharAt(newIndex--, '%'); } else { str.setCharAt(newIndex--,str.charAt(index)); } index--; } return str.toString(); }
这种方法是在原字符串上进行扩容,将替换的字符再插入进去,这种方法相对前两种来讲更好一些。it