[Java練習題] 使用 String 中的 function 替換字串
好,那我們再來一個難一點的!計算”Mary”出現在字串中幾次!
以下是範例解法:
先設定一 int counter(計數器) 等於0,
int counter=0;
再設定一 int index2 等於 0,
int index2=0;
然後設定一無限迴圈,以找不到字串(回傳-1)為跳出條件,
while (true) { if (index2==-1) break; }
並在每一次執行時把計數器中的數值加一,
count++;
並在每次迴圈一開始的時候加入 indexOf 判斷是否找到,
index2=name.indexOf("Mary");
沒錯,因為一直執行的話就會不斷找到第一個 Mary 字串,並回傳 0 ,這樣根本沒完沒了,所以我們要讓每一次的執行都往下一個找,因此將上方的程式碼依下方格式稍作修改,指定要從哪裡(fromIndex)開始搜尋,
public int indexOf(String str, int fromIndex)
改完之後會像這樣,
index2=name.indexOf("Mary", index2);
並且在每一次執行之後以偏移的方式指定要搜尋下一個 Mary 字串,
index2+="Mary".length();
或
index2++;
最後就會像這樣:
int index2=0; int count=0; while (true) { index2=name.indexOf("Mary", index2); if (index2==-1) break; index2+="Mary".length(); count++; }
count 就是Mary 字串出現的個數,
我們還可以再做修改,變成這樣:
int index2=0; int count=0; while (true) { index2=name.indexOf("Mary", index2); if (index2==-1) break; System.out.printf("String \"Mary\" Found between index \"%d\" & \"%d\"\n", index2, index2+"Mary".length()); index2+="Mary".length(); }
就可以印出每次找到 Mary 字串的地方,是不是很有趣阿!