Проблема в том, что "и \ являются специальными символами. Чтобы использовать их в качестве литералов в строках, вам нужно их экранировать. Поэтому правильный путь будет:
str = str.replace("\"", "\\\"");
В этом контекстестроки разбиты как таковые, с пробелами вокруг символов или ясности:
" \" " This is an escaped quote
" \\ " This is an escaped backslash
Таким образом, если вы хотите представить обратную косую черту, за которой следует кавычка, вы можете увидеть, что она разбивается как:
" \\ \" " Quotes around the whole literal, an escaped backslash, an escaped quote