[Java練習題] 使用 String 中的 function 替換字串
好,接下來就是重頭戲了,我們要將一個字串
“One little, two little, three little Indians, Four little,five little, six little Indians, Seven little, eight little, nine little Indians, Ten little Indian boys.”
替換為
One big, two big, three big Taiwanese, Four big,five big, six big Taiwanese, Seven big, eight big, nine big Taiwanese, Ten big Taiwanese boys.
簡單來說,我們要將所有的 “little” 替換為 “big” ,將”Indians” 替換為 “Taiwanese” ,最後再將 “Indian” 替換為 “Taiwanese” 就可以了,雖然在純C 中這件事情可能很麻煩,但在 Java 之中我們可以直接套用現有的函式喔!
public String replace(CharSequence target, CharSequence replacement)
和,這個
public String replaceAll(String regex, String replacement)
相信眼尖的觀眾們一定注意到了,會什麼在replace 函式原型會出現 CharSequence 這個東西,而不是 String 呢?
有趣的就在這裡,根據 Java 的 API,它其實是一個 界面(interfce),而 String 是它的實作,所以它也可以用來接收 String 喔!
(這段聽不懂請直接忽略,直接把 CharSequence 當成 String 就好了!)
int littleIndex=0, indiansIndex=0; int littleCount=0, indiansCount=0;
以 littleIndex 與 indiansIndex 分別紀錄 little 和 indians 出現的位置;並以 littleCount 與 indiansCount 分別計算 little 和 indians 出現的次數。
修改前面提到的程式碼以計算 little 和 indians 出現的次數,並印出,然後再加入以下二行程式碼,
String t1=song.replaceAll("little", "big"); String t2=t1.replaceAll("Indians", "Taiwanese"); String t3=t2.replace("Indian", "Taiwanese");
完成之後會像這樣:
public class Java_indexOf_replace { public static void main(String[] arg) { String song = "One little, two little, three little Indians, Four little,five little, six little Indians, Seven little, eight little, nine little Indians, Ten little Indian boys."; int littleIndex=0, indiansIndex=0; int littleCount=0, indiansCount=0; while(true) { littleIndex=song.indexOf("little", littleIndex); //System.out.println(littleIndex); if (littleIndex==-1) break; littleIndex+="little".length(); littleCount++; } System.out.println("little count = " + littleCount); while(true) { indiansIndex=song.indexOf("Indians", indiansIndex); //System.out.println(indiansIndex); if (indiansIndex==-1) break; indiansIndex+="little".length(); indiansCount++; } System.out.println("indians count = " + indiansCount); String t1=song.replaceAll("little", "big"); String t2=t1.replaceAll("Indians", "Taiwanese"); String t3=t2.replace("Indian", "Taiwanese"); System.out.println(t3); } }
若要更加節省記憶體,可以像底下一樣,把所有的 String t某某 刪掉,直接對 song 字串進行修改,反正它之後用不到了,不是嗎?
String t1=song.replaceAll("little", "big"); String t2=t1.replaceAll("Indians", "Taiwanese"); String t3=t2.replace("Indian", "Taiwanese"); System.out.println(t3);
改成
song=song.replaceAll("little", "big"); song=song.replaceAll("Indians", "Taiwanese"); song=song.replace("Indian", "Taiwanese"); System.out.println(song);
於是我們節省了三個字串的記憶體空間!
謝謝收看,我們下次再會!