如何将所有双引号都替换为大括号和大括号。
let str = "This" is my "new" key "string";
我尝试过此正则表达式
str.replace(/"/,'{').replace(/"/,'}')
但是我最终得到了这个
{This} is my "new" key "string"
在这里,仅第一个单词正在更改,但我想更改所有单词。 我希望结果是:
{This} is my {new} key {string}
谢谢。
答案 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
时将其替换为"
或{
。
}