Подтвердить что ты не робот

Как заменить двойную кавычку двойной кавычкой escape-char в строке с помощью javascript?

Скажем, у меня есть строковая переменная (var str) следующим образом:

Чувак, он полностью сказал, что "Ты Рок!"

Теперь, если я сделаю это следующим образом -

Чувак, он полностью сказал, что "Скажи!"

Как это сделать, используя функцию JavaScript replace()?

str.replace("\"","\\""); работает не так хорошо. Он дает ошибку unterminated string literal.

Теперь, если приведенное выше предложение должно быть сохранено в базе данных SQL, скажем, в MySQL как тип данных LONGTEXT (или любой другой VARCHAR-ish), какие еще оптимизации строк мне нужно выполнить? Цитаты и запятые не очень дружелюбны к строкам запроса. Я был бы признателен за несколько предложений по этому вопросу.

4b9b3361

Ответ 1

Для этого вам нужно использовать глобальное регулярное выражение, попробуйте его таким образом

str.replace(/"/g, '\\"');

проверьте синтаксис regex и параметры для функции replace здесь:

http://www.regular-expressions.info/javascript.html

Ответ 2

Попробуйте следующее:

str.replace("\"","\\\""); // (escape backslashes and embedded double-quotes)

Или используйте одиночные кавычки, чтобы процитировать ваш поиск и заменить строки:

str.replace('"','\\"');   // (still need to escape the backslash)

UPDATE: Как указал гелем, если первый параметр, переданный в .replace(), является строкой, он заменит только первое вхождение. Чтобы заменить глобально, вы должны передать регулярное выражение с флагом g (global):

str.replace(/"/g,"\\\"");
// or
str.replace(/"/g,'\\"');

Но зачем вы это делаете в JavaScript? Хорошо использовать эти escape-символы, если у вас есть строковый литерал, например:

var str = "Dude, he totally said that \"You Rock!\"";

Но это необходимо только в строковом литерале. То есть, если ваша переменная JS установлена ​​в значение, которое пользователь вводил в поле формы, вам не нужно это экранирование.

Что касается вашего вопроса о сохранении такой строки в базе данных SQL, вам нужно только избежать символов, если вы встраиваете строковый литерал в свой SQL-запрос - и помните, что escape-символы, которые применяются в SQL, не являются (обычно) так же, как и для JS. Вы должны выполнить любую связанную с SQL-связью работу на стороне сервера.

Ответ 3

var str = 'Dude, he totally said that "You Rock!"';
var var1 = str.replace(/\"/g,"\\\"");
alert(var1);