String k = "I am student";
String s3 = k.replace(m, s); // 編譯錯誤:m cannot be resolved to a variable
replace 方法簽名為 replace(CharSequence target, CharSequence replacement),參數必須是字串字面值或已宣告的字串變數。代碼中 m、s 皆未宣告,編譯器視為未定義變數。
// 1. 直接使用字串字面值 (推薦)
String s3 = k.replace("am", "was"); // "I was student"
// 2. 使用已宣告變數
String target = "am";
String replacement = "was";
String s3 = k.replace(target, replacement);
// 3. 正則替換 (replaceAll)
String s4 = k.replaceAll("\\s+", "-"); // "I-am-student"
| 方法 | 參數 | 是否正則 | 替換範圍 |
|---|---|---|---|
replace(char, char) | 字元 | 否 | 所有匹配 |
replace(CharSequence, CharSequence) | 字串 | 否 | 所有匹配 |
replaceFirst(String regex, String repl) | 正則 | 是 | 首個匹配 |
replaceAll(String regex, String repl) | 正則 | 是 | 所有匹配 |
String 為不可變物件,replace 回傳新字串,原字串 k 不變。.$^{[()|*+?\\) 需雙重轉義:"\\." 代表字面點號。String.replace(CharSequence, CharSequence) 重載,效能優於正則版。