题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
这里有好多的问题,一些东西还是用的不习惯,下面一一说出吧。
①先把字符串传入StringBuffer str,这里传入的字符串叫str(大佬们都这样叫,是一种惯例了吧)。
②如果该字符串为空(null),那就返回一个空。
③如果不为空,那就开始了我们真正的编程。
先定义一个新的字符串StringBuffer newstr,这里StringBuffer也是字符串的一种定义,再引入变量i作为字符串中的第几个字母,做一个for循环,遍历该字符串中的每一个字母,再引入一个if条件,判断每一个字母是否为空格,如果是空格就用%20代替,(这里str.charAt(i)就是该字符串中的第i个字母。newstr.append();是用小括号里的东西拼接到字符串newstr上,值得注意的就是这不是新建一个字符串,而是实现了字符串的拼接,这就是StringBuffer的重要运用,或者用StringBuilder,他俩的区别我也不太清楚,目前是可以替换使用的),如果不是空格,那就直接拼接到newstr上就好了。最后就是返回了拼接好的StringBuffer字符串,return newstr.toString();只是一个常见的返回类型,指的是将StringBuffer或StringBuilder类型转为String类型,然后再返回。
newstr.append('%');
newstr.append('2');
newstr.append('0');
程序中的这几行代码也可以写成
newstr.append(“%20”);
作用一样,就是引入字符用单引号,引入字符串用双引号。
就这样,程序完成了。以下就是借鉴各位大佬的代码实现的。也算是有了很大的收获。
public class Solution {
public String replaceSpace(StringBuffer str) {
if (str == null){
return null;
}
StringBuffer newstr = new StringBuffer();
for(int i = 0;i < str.length();i++){
if (str.charAt(i)==' '){
newstr.append('%');
newstr.append('2');
newstr.append('0');
}else{
newstr.append(str.charAt(i));
}
}
return newstr.toString();
}
}