如何在 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 中替换或编码单引号和右双引号?

JavaScript 字符串单引号双引号相互替换

Javascript - 如何在 Kendo 模板上转义双引号和单引号

如何在java中用\替换字符串中的“(双引号)”

如何在 Java 中用空格替换双引号?

关于JS替换双引号