字符串将双引号替换为大括号

时间:2018-12-23 06:36:04

标签: javascript regex string replace ecmascript-6

如何将所有双引号都替换为大括号和大括号。

let str = "This" is my "new" key "string";

我尝试过此正则表达式

str.replace(/"/,'{').replace(/"/,'}')

但是我最终得到了这个

{This} is my "new" key "string"

在这里,仅第一个单词正在更改,但我想更改所有单词。 我希望结果是:

{This} is my {new} key {string}

谢谢。

4 个答案:

答案 0 :(得分:9)

尝试使用全局正则表达式并使用捕获组:

let str = '"This" is my "new" key "string"';
str = str.replace(/"([^"]*)"/g, '{$1}');
console.log(str);

"([^"]*)"正则表达式捕获一个",后跟0个或多个不是另一个"的事物,最后一个"。替换使用$1作为引号中引用内容的参考。

答案 1 :(得分:4)

您的代码当前仅适用于{}中的每一个的第一次出现。解决此问题的最简单方法是在"中仍然有str的情况下循环:

let str = '"This" is my "new" key "string"';
while (str.includes('"')) {
  str = str.replace(/"/,'{').replace(/"/,'}');
}
console.log(str);

答案 2 :(得分:1)

尝试这样

str.replace(/\"(.*?)\"/g, "{$1}")

我们需要使用g-gobal flag。这里捕获双引号“”之间的字符串,然后替换为匹配的字符串大括号

答案 3 :(得分:0)

一种非常简单的方法是将字符串作为数组进行迭代,并在每次遇到字符class时将其替换为"{

}