您的位置:首页 > Web前端

剑指Offer——替换空格

2016-04-22 22:17 288 查看


题目描述

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

编程思路:

public class 替换空格 {

public static void main(String[] args) {
StringBuffer sb = new StringBuffer("Hello World hao  zhong");
System.out.println(sb);
System.out.println(replaceSpace1(sb));
System.out.println(replaceSpace2(sb));
System.out.println(replaceSpace3(sb));
System.out.println(replaceSpace4(sb));
}

//方法1:使用StringBuffer中的replace和insert方法
public static String replaceSpace1(StringBuffer str) {
for(int i = 0;i<str.length();i++){
if(str.charAt(i)==' '){
str.replace(i, i+1, "%");
str.insert(i+1, "20");
}
}
return str.toString();
}

//方法2:使用Sting中的replaceAll方法(有正则表达式)
public static String replaceSpace2(StringBuffer str) {
return str.toString().replaceAll("\\s","%20");
// return str.toString().replaceAll(" ", "%20");
}

//方法3:使用StingBuffer中的append方法(有正则表达式)
public static String replaceSpace3(StringBuffer str) {

char[] strChar = str.toString().toCharArray();
StringBuffer stb = new StringBuffer();
for(int i=0;i<strChar.length;i++){
if(strChar[i]==' '){
stb.append("%20");
}else{
stb.append(strChar[i]);
}
}
return stb.toString();
}

//方法4:在创建一个扩充长度后的字符数组。
public static String replaceSpace4(StringBuffer str) {
int space_num = 0;
for(int i = 0;i<str.length();i++){
if(str.charAt(i) == ' ') space_num++;
}

char[] ch = new char[str.length()+2*space_num];

for(int i = 0,j = 0;i<str.length();){
if(str.charAt(i) == ' '){
ch[j++] = '%';
ch[j++] = '2';
ch[j++] = '0';
i++;
}else{
ch[j++] = str.charAt(i++);
}
}
return String.valueOf(ch);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: