替换空格
描述
请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”.
方法
一种是使用不改变字符串的方法,利用stringbuilder方法new一个,从原数组往外拿的过程中判断空格等等。原理很简单。记住StringBuilder。
另一种是改变元字符串,增加长度,再添加。
代码
public class ReplaceBlanks {
// 用StringBuilder
public static void main(String[] args) {
String s = "we are happy";
String s1 = " we are happy";
String resultString1 = getResult(s);
String resultString2 = getResult(s1);
System.out.println(resultString1);
System.out.println(resultString1);
}
public static String getResult(String s) {
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();i++) {
if(s.charAt(i)==' ') {
sb.append("%20");
}else {
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
public class ReplaceBlanks {
//由于java的字符数组没有结束符,所以需要多传入个原始长度
public static void replaceBlank(char[] data,int length){
int newLength = length;
for(int i=0;i<length;i++){
if(data[i]==' ')
newLength += 2;
}
for(int indexOfOld = length-1,indexOfNew=newLength-1;indexOfOld>=0 && indexOfOld!=indexOfNew;indexOfOld--,indexOfNew--){
if(data[indexOfOld]==' '){
data[indexOfNew--] = '0';
data[indexOfNew--] = '2';
data[indexOfNew] = '%';
}
else{
data[indexOfNew] = data[indexOfOld];
}
}
}
public static void main(String[] args){
char[] predata = "We are happy.".toCharArray();
char[] data = new char[20];
for(int i=0;i<predata.length;i++)
data[i] = predata[i];
System.out.println(data);
replaceBlank(data,13);
System.out.println(data);
}
}