題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
這題真的超級簡單,我要是用c/c++早就寫完了。可是lsy開始折磨自己了,開始用java刷題,一道這麼簡單的題,硬是浪費了許多時間。因爲不知道方法,還跑去jdk裏面看了源碼,看StringBuffer裏有哪些方法。
看完有哪些方法後發現超級簡單。感覺java白學了一樣~~
代碼
public class Solution {
public String replaceSpace(StringBuffer str) {
for(int i=0;i<str.length();i++)
{
if(str.charAt(i)==' ')
{
str.deleteCharAt(i);
str.insert(i,"%20");
}
}
return str.toString();
}
}
這裏就解釋一下我遇到的問題和這兩個方法的作用吧
一開始我寫的是 if(str[i]==' ')
一直說我編譯不通過。後來發現自己是傻逼,StringBuffer 沒有下標…不是數組…
然後我寫的return str
,str 是StringBuffer類,而這個方法的返回值是String類,所以我不能直接返回str。要將str轉成string類後再返回。
- public char charAt(int index) 返回char在指定索引在這個序列值。 第一個char值爲索引0 ,下一個索引爲1 ,依此類推,就像數組索引一樣。
- public StringBuffer deleteCharAt(int index) 將index位置的字符刪除。
- public StringBuffer insert(int offset,char[] str)在指定位置插入一個字符串
String 和 StringBuffer 的 互相轉換
package demo;
/* String與StringBuffer之間的轉換
* String -> StringBuffer
* 方式一:構造方法
* 方式二:通過append方法
* StringBuffer -> String
* 方式一:通過構造方法
* 方式二:通過toString方法
* */
public class StringAndStringBufferSwitch {
public static void main(String[] args) {
//String -> StringBuffer
//創建一個String對象
String str = "Hi Java!";
System.out.println(str);
//方式一:構造方法
StringBuffer buffer = new StringBuffer(str);
System.out.println(buffer);
//方式二:通過append方法
StringBuffer buffer2 = new StringBuffer();
buffer2.append(str);
System.out.println(buffer2);
//StringBuffer -> String
//創建一個StringBuffer對象
StringBuffer buffer3 = new StringBuffer();
buffer3.append("Happy birthday Java!");
System.out.println(buffer3);
//方式一:通過構造方法
String str2 = new String(buffer3);
System.out.println(str2);
//方式二:通過toString方法
String str3 = buffer3.toString();
System.out.println(str3);
}
}