以下代码仅替换一个单引号。我需要用双引号替换所有单引号。我该怎么做?
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace("'", "\"");
答案 0 :(得分:60)
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/'/g, '"');
console.log(b);
编辑:删除\,因为这里没用。
答案 1 :(得分:6)
需要使用正则表达式:
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/\'/g, "\"");
答案 2 :(得分:4)
您可以在正则表达式上使用全局限定符(尾随g
):
var b = a.replace(/'/g, '"');
如果没有全局限定符,则正则表达式(/'/
)仅匹配'
的第一个实例。
答案 3 :(得分:1)
这看起来很像JSON,所以我建议使用实际的数组和对象文字,然后以正确的方式编码:
var a = [{'column1':'value0','column2':'value1','column3':'value2'}];
var b = JSON.stringify(a);
答案 4 :(得分:1)
replaceAll(search, replaceWith)
将所有出现的 search
替换为 replaceWith
。
然后,通过用不同类型包装一种类型的 qoutes 来确保你有一个字符串:
"a 'b' c".replaceAll("'", '"')
// result: "a "b" c"
"a 'b' c".replaceAll(`'`, `"`)
// result: "a "b" c"
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") 标志;
否则,它会抛出一个类型错误:“replaceAll 必须用
一个全局 RegExp”。
您也可以将函数用作 replaceWith
在这种情况下,该函数将在匹配完成后调用 执行。函数的结果(返回值)将用作 替换字符串。
答案 5 :(得分:0)
添加g
修饰符:
var b = a.replace(/'/g, '"');
答案 6 :(得分:0)
您可以使用带有全局标记g
的RegExp并替换所有引号:
var b = a.replace(/'/g, '"');