Ответ таков: да, вы должны сделать две вещи:
- заменить буквенные символы обратной косой черты в строке двумя обратными косыми чертами,
- ТО, вы продолжаете заменять любые вхождения "на \".
Самое простое объяснение того, почему шаг 1 важен, это рассмотреть 5-символьную строку:
foo\"
После первых 3 символов (foo) в строке присутствует буквенный символ обратной косой черты, а затем буквальный символ двойной кавычки.
(Другими словами, как строковый литерал это будет выглядеть как "foo \" ")
Если бы я только заменил символ кавычки, я бы получил строку в кавычках со значением
foo\\"
Но два обратных слеша здесь будут интерпретироваться как один обратный слеш. Поэтому, когда я заключаю это значение в кавычки, я получаю несбалансированные кавычки.
"foo\\""
с другой стороны, если я сначала выполню шаг 1 - замена всех обратных косых черт двойными обратными косыми чертами дает
foo\\"
, а затем шаг 2 - замена цитаты на косую черту дает
foo\\\"
Теперь, когда я оборачиваю свое значение в кавычки, я наконец получаю
"foo\\\""
что правильно.