Как добавить косую черту в строку в Javascript?
Просто строка. Добавляйте к нему каждый раз, когда есть одна цитата.
8 ответов
replace
работает для первой кавычки, поэтому вам нужно маленькое регулярное выражение:
str = str.replace(/'/g, "\\'");
Следующая функция JavaScript обрабатывает ', ", \b, \t, \n, \f или \r эквивалент php-функции addlashes().
function addslashes(string) {
return string.replace(/\\/g, '\\\\').
replace(/\u0008/g, '\\b').
replace(/\t/g, '\\t').
replace(/\n/g, '\\n').
replace(/\f/g, '\\f').
replace(/\r/g, '\\r').
replace(/'/g, '\\\'').
replace(/"/g, '\\"');
}
Строка может быть полностью и компактно экранирована с помощью JSON.stringify. Начиная с ECMAScript 5 он является частью JavaScript и поддерживается основными новыми версиями браузеров.
str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);
При таком подходе также используются специальные символы, такие как нулевой байт, символы Юникода и разрывы строк. \r
а также \n
правильно экранированы в относительно компактном выражении.
Конечно, вам нужно заменить не только одинарные кавычки, но и уже экранированные:
"first ' and \' second".replace(/'|\\'/g, "\\'")
Ответ, который вы не просили, может быть полезен, если вы делаете замену при подготовке к отправке строки в alert() - или что-то еще, когда один символ кавычки может сбить вас с толку.
str.replace("'",'\x27')
Это заменит все одинарные кавычки шестнадцатеричным кодом для одинарной кавычки.
if (!String.prototype.hasOwnProperty('addSlashes')) {
String.prototype.addSlashes = function() {
return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
.replace(/'/g, ''') /* The 4 other predefined entities, required. */
.replace(/"/g, '"')
.replace(/\\/g, '\\\\')
.replace(/</g, '<')
.replace(/>/g, '>').replace(/\u0000/g, '\\0');
}
}
Использование: alert(str.addSlashes());
ссылка: /questions/47525248/kak-izbezhat-kavyichek-v-znacheniyah-atributov-html/47525276#47525276
var str = "This is a single quote: ' and so is this: '";
console.log(str);
var replaced = str.replace(/'/g, "\\'");
console.log(replaced);
Дает тебе:
This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'