Escape кавычки на строку JavaScript
У меня есть переменная с этим видом строки: 4,5"х8,5" х0,5"
Я нашел много ответов о том, как избежать кавычек, поэтому я пишу эту функцию:
function replaceQuotesChars (str)
{
var s = str.trim();
// s.replace('"','"');
// s.replace('"','\\"');
// s.replace(/\"/g,'\\"');
s.replace(/\"/g,'"');
return s;
};
Но ни один из них не помогает мне избежать кавычек, потому что я получаю ту же строку, которую я отправляю в функцию.
Я сохраняю эту переменную с объектом stringify в базе данных, поэтому при анализе строки я получаю сообщение об ошибке.
Что я делаю не так? Пожалуйста, помогите мне.
2 ответа
После .replace
(или фактически любой другой метод манипуляции со строками) возвращается новая строка, потому что строки являются "неизменяемыми" объектами (их нельзя изменить после создания). Ваш код предполагает, что операция происходит "на месте". Вам нужно захватить новую строку (что, кстати, вы сделали с .trim()
операция).
В следующем коде:
- Первый
.trim()
называется наstr
, который копирует строку вstr
но без начальных и конечных пробелов, а затем возвращает эту новую строку. - На этой новой строке,
.replace()
вызывается, что копирует усеченную строку, но с замененными символами, а затем возвращает новую строку. - Эта последняя строка и возвращается функцией.
function replaceQuotesChars (str, delimeter) {
// Each string operation returns a new string. Take that final
// string and return it
return str.trim().replace(/\"/g, delimeter);
};
console.log(replaceQuotesChars('10.5" x 4.75"', """));
console.log(replaceQuotesChars('10.5" x 4.75"', "\'"));
console.log(replaceQuotesChars('10.5" x 4.75"', "\""));
@ Скотт Маркус уже ответил на вопрос, но если вы запутались, используя регулярное выражение (как я), есть альтернативный метод, использующий метод.split().
var a = str.split("\"");
var newS=""
for(var i = 0; i<a.length; i++){
if(a[1]!= ""){
newS = newS + a[i];
}
}
return newS;
Это работает медленнее, чем регулярное выражение, но делает работу.