正規表現で置換する文字のエスケープ

正規表現そのものじゃなくて、正規表現で置換する文字のエスケープ。
replaceAll(A, B)のBの部分の文字列。


public static String escape(String src) {
if (src == null || (src.indexOf('$') < 0 && src.indexOf('\\') < 0)) {
return src;
}

char[] cs = src.toCharArray();
StringBuffer buf = new StringBuffer();

for (int i = 0; i < cs.length; i++) {
if (cs[i] == '$' || cs[i] == '\\') {
buf.append('\\');
}

buf.append(cs[i]);
}

return buf.toString();
}

ぜんぜん意識していなかったから気をつけよう…