String s = "cn.sun.dao"; 想將點號 . 替換為 /。直接用 s.replaceAll(".", "/") 結果全字符都被替換,因為 replaceAll 的第一個參數是正則表達式,. 匹配任意字符。
String d = s.replaceAll("\\.", "/"); // 雙反斜杠:Java 字符串轉義 -> 正則引擎看到 \.
String d = s.replace(".", "/"); // 字面替換,性能更好
// 或
String d = s.replace('.', '/'); // 單字符替換重載
| 方法 | 支援正則 | 適用場景 |
|---|---|---|
| replaceAll(regex, repl) | 是 | 複雜模式替換 |
| replace(CharSequence, CharSequence) | 否 | 字面字符串替換,Java 1.5+ |
| replace(char, char) | 否 | 單字符替換,最高效 |
replace,代碼更清晰、性能更高、避免轉義陷阱。.→\\.、$→\\$、\→\\\\。Pattern.quote(str) 自動轉義整段字面字符串:s.replaceAll(Pattern.quote("."), "/")。