转义字符串 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()
操作)。
在下面的代码中:
- 首先在
str
上调用 .trim()
,它复制 str
中的字符串但没有前导和尾随空格,然后 returns 那个新字符串。
- 在那个新字符串上,调用
.replace()
,它复制修剪后的字符串,但替换字符,然后 returns 一个新字符串。
- 最后的字符串就是函数返回的内容。
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;
这比正则表达式运行得慢,但可以完成工作。
我有一个带有这种字符串的变量: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()
操作)。
在下面的代码中:
- 首先在
str
上调用.trim()
,它复制str
中的字符串但没有前导和尾随空格,然后 returns 那个新字符串。 - 在那个新字符串上,调用
.replace()
,它复制修剪后的字符串,但替换字符,然后 returns 一个新字符串。 - 最后的字符串就是函数返回的内容。
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;
这比正则表达式运行得慢,但可以完成工作。