String#replaceAll()
интерпретирует этот аргумент как регулярное выражение . \
является escape-символом как в String
, так и в regex
. Вам нужно дважды уйти от него для регулярного выражения:
string.replaceAll("\\\\", "\\\\\\\\");
Но для этого вам не обязательно нужно регулярное выражение, просто потому, что вам нужна точная замена по каждому символу, и вам не нужны шаблоны Вот. Поэтому String#replace()
должно быть достаточно:
string.replace("\\", "\\\\");
Обновление: согласно комментариям, вы, похоже, хотите использовать строку в контексте JavaScript. Возможно, вам лучше использовать StringEscapeUtils#escapeEcmaScript()
, чтобы покрыть больше символов.