考点:字符串
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
方案一:调用Java中的方法
public class Solution {
public String replaceSpace(StringBuffer str) {
if (str==null){
return null;
}
else{
for(int i=0;i<str.length();i++){
if(' '==str.charAt(i))
str.replace(i,i+1,"%20");
}
return str.toString();
}
}
}
说明:charAt(i) 得到数组下标为i位置的值;
replace(start,end,s),包括start,不包括end,即把start到end-1位置的数据替换成s; replace(i,i+1,"%20")即把i位置替换;
toString(),返回一个对象的字符串表示,但要注意调用toString()方法的对象不能为空,否则会抛出空指针异常。
因为函数的返回类型是String,所以str通过toString()方法转化成String类型。
或不用遍历,直接全部替换。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null){
return null;
}else{
return str.toString().replaceAll(" ","%20");
}
}
}
然后我考虑不用replace方法,用字符串来替换:
public class Solution {
public String replaceSpace(StringBuffer str) {
int len=str.length();
String arr=new String();
String b=new String();
for(int i=0;i<len;i++){
if(' '==str.charAt(i)){
arr+="%20";
}else{
b=str.charAt(i)+"";
arr+=b;
}
}
return arr;
}
}
这里折腾了很久(基础差),因为charAt()得到的是一个字符,而我想要做的是把它加入到字符串中。尝试String.valueOf(a) 后得到的结论是a必须是数组,不然会出现大意为找不到这种符号的错误,即没有声明类型。最后用了最蠢的方式将字符转换为字符串。
chrCharArray = strStringType.toCharArray();
//将字符串变量转换为字符数组
strStringType= String.valueOf(chrCharArray );
//将字符数组转换为字符串
本来想实现不创建新的数组完成替换,但用Java定义数组必须给出长度,试了很久总发生下标溢出,放弃了。