转义字符串 javascript 上的引号

Escape quotes on string javascript

我有一个带有这种字符串的变量:4.5"x8.5"x0.5"

我找到了很多关于如何转义引号的答案,所以我写了这个函数:

function replaceQuotesChars (str)
{
    var s = str.trim();

    // s.replace('"','"');

    // s.replace('"','\"');

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

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

    return s;
};

但是其中 none 帮助我转义了引号,因为我得到的字符串与我提交给函数的字符串相同。

我将该变量与 stringify 对象一起保存到数据库中,因此当我解析回字符串时出现错误。

我做错了什么?请帮助我。

.replace(或者实际上只是任何其他字符串操作方法)之后返回一个新字符串,因为字符串是 "immutable" objects(一旦创建就不能修改)。您的代码假定操作发生 "in-place"。您需要捕获新字符串(顺便说一句,您确实使用了 .trim() 操作)。

在下面的代码中:

  1. 首先在 str 上调用 .trim(),它复制 str 中的字符串但没有前导和尾随空格,然后 returns 那个新字符串。
  2. 在那个新字符串上,调用 .replace(),它复制修剪后的字符串,但替换字符,然后 returns 一个新字符串。
  3. 最后的字符串就是函数返回的内容。

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"', "\""));

@Scott Marcus 已经回答了这个问题,但如果您对使用正则表达式感到困惑(像我一样),还有一种使用 .split() 方法的替代方法。

var a = str.split("\"");
var newS=""
for(var i = 0; i<a.length; i++){
    if(a[1]!= ""){
        newS = newS + a[i];
    }
}
return newS;

这比正则表达式运行得慢,但可以完成工作。