字符串替换双引号括号括起来[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串替换双引号括号括起来[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

如何将所有Double引号替换为打开和关闭大括号。

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

我试过这个正则表达式

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

但我最终得到了这个:

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

这里只有第一个字正在改变,但我想改变所有的话。我希望结果如下:

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

提前致谢。

答案

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

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

您的代码目前仅适用于每个{}的第一次出现。修复此问题的最简单方法是循环,而"中仍有str

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

试试这样吧

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

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

另一答案

一个非常简单的方法是将字符串作为一个数组进行迭代,每次遇到字符时,"都会被{}重复替换。

let str = '"This" is my "new" key "string"';
let strArray = str.split("");
let open = true;
for (let i = 0; i < strArray.length; ++i) {
    if (strArray[i] == '"') {
        if (open === true) {
            strArray[i] = '{';
        }
        else {
           strArray[i] = '}';
        }
        open = (open == true) ? false : true;
    }
}
str = strArray.join("");
console.log(str)

以上是关于字符串替换双引号括号括起来[重复]的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本双引号大括号if语句注意事项

正则表达式替换可能会或可能不会被引用的字符串

SQLServer值DEFAULT约束

Python 3学习笔记

QSettings:是不是可以始终保存用双引号括起来的字符串?

JSON的键究竟需要用双引号括起来吗