String s = "XXXX[#111]YYY[#111]";
s = s.replaceAll("[#111]", "555"); // 預期替換 [#111],實際輸出錯誤
replaceAll 參數是 **正則表達式**。[] 在正則中代表「字元類別」,[#111] 被解析為「匹配單一字元:# 或 1」,導致所有 # 和 1 都被替換。
s = s.replaceAll("\\[#111\\]", "555"); // 輸出:XXXX555YYY555
或使用 Pattern.quote 自動轉義:
s = s.replaceAll(Pattern.quote("[#111]"), "555");
replace(CharSequence, CharSequence):**字面字串替換**,不支援正則,效能較好,適合固定子串替換。replaceAll(String regex, String replacement):**正則替換**,功能強大但需注意特殊字元轉義。replaceFirst(String regex, String replacement):僅替換第一個匹配。