请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解决方法
用stringbuffer的delete和insert方法
package test1;
public class JZoffer2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer str=new StringBuffer("we are happy");
String strNew=replaceSpace(str);
System.out.print(strNew);
}
private static String replaceSpace(StringBuffer str) {
// TODO Auto-generated method stub
for(int i=0;i<str.length();i++) {
if(str.charAt(i)==' ') {
str.deleteCharAt(i);
str.insert(i, "20%");
i=i+2;
}
}
return str.toString();
}
}
网上的另一种解法:
package test1;
import java.util.Scanner;
public class replaceSpace {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer str=new StringBuffer("we are happy");
String s=replaceSpace(str);
System.out.print(s);
}
private static String replaceSpace(StringBuffer str) {
// TODO Auto-generated method stub
char[] ch=str.toString().toCharArray();
int spaceNum=0;
for(int i=0;i<ch.length;i++) {
if(ch[i]==' ') {
spaceNum++;
}
}
char[] chNew=new char[2*spaceNum+ch.length];
int chNewLen=2*spaceNum+ch.length-1;
for(int i=ch.length-1;i>=0;i--) {
if(ch[i]!=' ') {
chNew[chNewLen--]=ch[i];
}else {
chNew[chNewLen--]='0';
chNew[chNewLen--]='2';
chNew[chNewLen--]='%';
}
}
return String.valueOf(chNew);
}
}