题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
使用StringBuffer中的replace()方法将空格替换为“20%”
StringBuffer 中indexOf()方法若没有找到字符,返回值为-1
public String replaceSpace(StringBuffer str) {
int index = str.indexOf(" ");
while(index != -1){
str.replace(index,index+1,"%20");
index = str.indexOf(" ", index);
}
String result = str.toString();
return result;
}
不使用replace()方法:
先计算出最终字符串的长度,从字符串的最后一个字符开始检验,不是空格就把字符存入新字符数组的最后一位。如果是空格则将“20%”存入字符数组的后面。
public String replaceSpace2(StringBuffer str) {
int n = 0;
int l = str.length();
for(int i = 0; i < l; i++){
if(str.charAt(i) == ' ')
n++;
}
int l2 = n*2 + l;
int index = l2 - 1;
char[] s = new char[l2];
while(l > 0){
if(str.charAt(l-1) != ' ')
s[index--] = str.charAt(l-1);
else{
s[index--] = '0';
s[index--] = '2';
s[index--] = '%';
}
l--;
}
return String.valueOf(s);
}