Ответ 1
Попробуйте следующее:
yourstring = yourstring.replace(/'/g, "''")
Я столкнулся с проблемой, которая, как мне кажется, вызвана необходимостью удлиннения некоторых одиночных кавычек внутри строки. Однако JS string.replace использует RegEx, и я никогда не создавал RegEx вручную.
Может кто-нибудь помочь мне создать RegEx, чтобы найти одну цитату и заменить ее двумя одинарными кавычками?
Попробуйте следующее:
yourstring = yourstring.replace(/'/g, "''")
str.replace(/'/g, "''");
Обязательно используйте глобальный флаг соответствия (g), чтобы заменить любые и все вхождения в строке. Подробнее здесь.
JS string.replace использует RegEx
Не обязательно:
var str = "O'Reilly books";
alert(str.replace("'", "''", 'g'));
Шаблон может быть строкой или RegExp
Ммм, мой код выше не работает на IE6, так что будет:
str.replace(/'/g, "''")
как и другие, но использование регулярных выражений для такой простой операции является излишним.
Попробуйте следующее:
function QuoteEncoding(strvalue) {
var strquotes = /(')/g;
return "'" + strvalue.replace(strquotes, "''") + "'";
}
вызовите этот метод следующим образом:
QuoteEncoding(strvalue);
Обратите внимание, что если вы не хотите использовать RegExp (и часто бывают веские причины этого не делать), идиома для простой замены строки:
str.split("'").join("''")
Хотя версия RegExp, как правило, немного быстрее, версия строки может быть победой, если вы не знаете, могут ли в строке поиска быть специальные символы регулярного выражения (например, .
).
Вам не нужно использовать RegExp.
Версия паттерна String:
str.replace("'", "''", 'g')
Версия шаблона RegExp:
str.replace(/'/g, "''")
Здесь у вас есть полезные ссылки RegExp:
Я не знаю точного синтаксиса, но вы можете найти это сами:
str.replace(/(?!')'(?!')/g, "''");
Не тестировал это еще, но если он работает, он также заботится только о замене случаев одиночной кавычки одна. Модификатор g необходим для замены всех ошибок.
js> s = "abc'def'xyz"
abc'def'xyz
js> s.replace(/'/g, "''")
abc''def''xyz