gpt4 book ai didi

javascript - 在保持 JSON 文件完整的同时替换 Javascript 中的字符串

转载 作者:行者123 更新时间:2023-11-29 10:28:32 26 4
gpt4 key购买 nike

我正在使用 Discord 机器人并有一个名为 config.json 的 JSON 文件,如下所示:

{
"token": "stuff"
"prefix": "!"
}

我想替换“前缀:”!行。我的代码是这样的:

if(cmd == "prefix"){
var new_prefix = "\"prefix\": " + "\"" + String(args[0]) + "\"";
var data = fs.readFileSync("config.json", "utf-8");
var newValue = data.replace(/"prefix"\s*:\s*".+"/gm, "new_prefix");
fs.writeFileSync("config.json", new_prefix, "utf-8");
};

它不是只替换一行,而是覆盖了我的整个 config.JSON 文件,因此它看起来像这样:

"prefix":"stuffHere"

我怎样才能让它只替换一行并保持文件的其余部分完好无损?

最佳答案

不要为此使用正则表达式,这会使事情变得比实际需要的复杂得多。使用 JSON.parse要将 JSON 字符串转换为对象,请分配给 prefix对象上的属性,然后写入字符串化对象:

if(cmd == "prefix"){
var dataJSON = fs.readFileSync("config.json", "utf-8");
var data = JSON.parse(dataJSON);
data.prefix = "new_prefix";
fs.writeFileSync("config.json", JSON.stringify(data), "utf-8");
}

如果您必须为此使用正则表达式,无论出于何种原因,那么您将不得不替换 "prefix": "<oldvalue>"不仅有新值,还有前缀属性。匹配值(以 " 开头)时,延迟重复任何字符,直到到达另一个 " ,如果字符串也不包含双引号:

.replace(/"prefix": *".*?"/, '"prefix": "new prefix"')

https://regex101.com/r/zyhPqG/1

关于javascript - 在保持 JSON 文件完整的同时替换 Javascript 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52323813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com