如何在 JavaScript 中用双引号替换单引号?
Posted
技术标签:
【中文标题】如何在 JavaScript 中用双引号替换单引号?【英文标题】:How do I replace single quotes with double quotes in JavaScript? 【发布时间】:2013-05-03 05:58:03 【问题描述】:以下代码只替换了一个单引号:
var a = "['column1':'value0','column2':'value1','column3':'value2']";
var b = a.replace("'", "\"");
console.log(b);
【问题讨论】:
***.com/questions/2390789/… 【参考方案1】:var a = "['column1':'value0','column2':'value1','column3':'value2']";
var b = a.replace(/'/g, '"');
console.log(b);
编辑:删除 \ 因为这里没有用。
【讨论】:
太棒了,它可以工作,虽然我不明白那个 'g' 是干什么用的。 这是一个正则表达式标志。 Read all about them. "g" 标志表示您执行全局搜索 不需要 \ 转义。 是的,“\”对于正则表达式是可以理解的(虽然不需要),但对于第二个参数字符串则不是【参考方案2】:需要为此使用正则表达式:
var a = "['column1':'value0','column2':'value1','column3':'value2']";
var b = a.replace(/\'/g, "\"");
http://jsfiddle.net/9b3K3/
【讨论】:
【参考方案3】:您可以在正则表达式上使用全局限定符(尾随 g
):
var b = a.replace(/'/g, '"');
没有全局限定符,正则表达式 (/'/
) 仅匹配 '
的第一个实例。
【讨论】:
【参考方案4】:replaceAll(search, replaceWith)
将所有出现的search
替换为replaceWith
。
然后,通过用不同类型包装一种类型的 qoutes 来确保你有一个字符串:
"a 'b' c".replaceAll("'", '"')
// result: "a "b" c"
"a 'b' c".replaceAll(`'`, `"`)
// result: "a "b" c"
更多关于replaceAll
replaceAll (MDN):replaceAll(search, replaceWith)
这实际上与使用带有全局正则表达式(*)的replace()
相同,只是replaceAll()
在我看来更具可读性。
(*) 表示它将匹配所有匹配项。
示例 1 - 使用字符串搜索
const p = 'Please replace all 2020 occurrences with 2021. 2020. 2020.'
console.log(p.replaceAll('2020', '2021'));
// Result: "Please replace all 2021 occurrences with 2021. 2021. 2021."
示例 2 - 使用正则表达式搜索
const p = 'Please replace all 2020 occurrences with 2021. 2020. 2020.'
const regex = /2020/gi
console.log(p.replaceAll(regex, '2021'));
// Result: "Please replace all 2021 occurrences with 2021. 2021. 2021."
如果您选择正则表达式,则重要(!):
当使用
regexp
时,您必须设置全局 ("g") 标志; 否则,它会抛出一个 TypeError: "replaceAll must be called with 一个全局正则表达式”。
您也可以将函数用作replaceWith
在这种情况下,该函数将在匹配完成后调用 执行。函数的结果(返回值)将用作 替换字符串。
【讨论】:
【参考方案5】:这看起来有点像错误的 JSON,所以我建议使用实际的数组和对象字面量,然后以正确的方式编码:
var a = ['column1':'value0','column2':'value1','column3':'value2'];
var b = JSON.stringify(a);
【讨论】:
我这样做了,但它比替换字符串花费的时间太长。 我本可以首先以正确的格式创建 JSON 字符串,但是我无法将它(作为会话)存储在隐藏字段中。我将所有双引号替换为单引号,以便将其存储在隐藏字段中。然后在客户端我将它替换回双引号。如果有更好的解决方案,我将不胜感激【参考方案6】:添加g
修饰符:
var b = a.replace(/'/g, '"');
【讨论】:
【参考方案7】:您可以使用带有全局标志g
的正则表达式,所有引号都将被替换:
var b = a.replace(/'/g, '"');
【讨论】:
您不会“只添加全局标志g
”。您创建了一个正则表达式并设置了全局标志。顺便说一下,用错误的字符替换错误的字符以上是关于如何在 JavaScript 中用双引号替换单引号?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中替换或编码单引号和右双引号?