问题描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
问题分析:对字符串从前往后单个字符遍历,遇到空格,将字符串截断成前后两段,并使用String类的trim()方法将后一段的字符串两头空格去除,再将其拼接后,后移三位继续遍历。
测试:
输入一个字符串:We Are Happy(每一个空皆有两个空格)
过程如图:
辅助图注释:
蓝色背景:需要替换成的字符串
箭头:指向需要替换的位置
下面给出代码实现:
package com.java.question;
/**
* 请实现一个函数,将一个字符串中的空格替换成“%20”。
* 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
* @author zxy
*
*/
public class Q_02 {
/**
* 将空格替换成"%20"
* @param str
* @return
*/
public static String replaceSpace(StringBuffer str) {
StringBuffer sb=null;
int i=0;
while(i<str.length()){
if(str.charAt(i)==' '){
sb=new StringBuffer();
String s_front=str.substring(0, i);
String s_rear=str.substring(i+1, str.length()).trim();
sb.append(s_front+"%20");
sb.append(s_rear);
str=sb;
i+=3;
}else{
i++;
}
}
return str.toString();
}
/**
* 测试
* @param args
*/
public static void main(String[] args) {
StringBuffer sb=new StringBuffer("We Are Happy");
System.out.println(replaceSpace(sb));
}
}