45

以下代码仅替换一个单引号:

var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace("'", "\"");
console.log(b);

4

7 回答 7

112

var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/'/g, '"');
console.log(b);

编辑:删除 \ 因为这里没有用。

于 2013-05-08T21:12:55.060 回答
8

为此需要使用正则表达式:

var a = "[{'column1':'value0','column2':'value1','column3':'value2'}]";
var b = a.replace(/\'/g, "\"");

http://jsfiddle.net/9b3K3/

于 2013-05-08T21:13:31.800 回答
4

g您可以在正则表达式上使用全局限定符(尾随):

var b = a.replace(/'/g, '"');

如果没有全局限定符,正则表达式 ( /'/) 仅匹配'.

于 2013-05-08T21:13:07.050 回答
3

replaceAll(search, replaceWith)用 替换所有出现searchreplaceWith

然后,通过用不同类型包装一种类型的 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."

重要()如果您选择正则表达式:

使用 a 时,regexp您必须设置全局 ("g") 标志;否则,它将抛出 TypeError:“replaceAll 必须使用全局 RegExp 调用”。


您还可以将函数用作replaceWith

在这种情况下,将在执行匹配后调用该函数。函数的结果(返回值)将用作替换字符串。

于 2021-01-01T15:34:21.470 回答
2

这看起来很像错误的 JSON,所以我建议使用实际的数组和对象文字,然后以正确的方式编码:

var a = [{'column1':'value0','column2':'value1','column3':'value2'}];
var b = JSON.stringify(a);
于 2013-05-08T21:13:48.267 回答
0

添加g修饰符: var b = a.replace(/'/g, '"');

于 2013-05-08T21:13:11.733 回答
0

您可以将 RegExp 与全局标志一起使用g,所有引号都将被替换:

var b = a.replace(/'/g, '"');
于 2013-05-08T21:14:08.557 回答