【发布时间】:2013-05-03 05:58:03
【问题描述】:
以下代码只替换了一个单引号:
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace("'", "\"");
console.log(b);
【问题讨论】:
标签: javascript
以下代码只替换了一个单引号:
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace("'", "\"");
console.log(b);
【问题讨论】:
标签: javascript
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/'/g, '"');
console.log(b);
编辑:删除 \ 因为这里没有用。
【讨论】:
需要为此使用正则表达式:
var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/\'/g, "\"");
【讨论】:
您可以在正则表达式上使用全局限定符(尾随 g):
var b = a.replace(/'/g, '"');
没有全局限定符,正则表达式 (/'/) 仅匹配 ' 的第一个实例。
【讨论】:
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") 标志; 否则,它会抛出一个 TypeError: "replaceAll must be called with 一个全局正则表达式”。
您也可以将函数用作replaceWith
在这种情况下,该函数将在匹配完成后调用 执行。函数的结果(返回值)将用作 替换字符串。
【讨论】:
这看起来有点像错误的 JSON,所以我建议使用实际的数组和对象字面量,然后以正确的方式编码:
var a = [{'column1':'value0','column2':'value1','column3':'value2'}];
var b = JSON.stringify(a);
【讨论】:
添加g 修饰符:
var b = a.replace(/'/g, '"');
【讨论】:
您可以使用带有全局标志g 的正则表达式,所有引号都将被替换:
var b = a.replace(/'/g, '"');
【讨论】:
g”。您创建了一个正则表达式并设置了全局标志。顺便说一下,用错误的字符替换错误的字符