問題描述:請實現一個函數,將一個字符串中的空格替換成“%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));
}
}