gpt4 book ai didi

javascript - 使用nodejs替换文件中的多个字符串

转载 作者:行者123 更新时间:2023-12-01 02:47:48 25 4
gpt4 key购买 nike

我有一个 json 文件,我想使用 Node js 的 fs 将两个单词替换为两个新单词。我在 Replace a string in a file using nodejs 上阅读了类似查询的解决方案。然后我尝试了以下代码片段,但它只替换了一个单词。我需要多次运行它来替换多个单词。

这是代码片段:

var fs = require('fs')
fs.readFile('C:\\Data\\sr4_Intellij\\newman\\Collections\\api_collection.json', 'utf8', function (err,data) {
if (err) {
return console.log(err);
}
var result1 = data.replace(/{{Name}}/g, 'abc');
var result2 = data.replace(/{{Address}}/g, 'xyz');
var arr1 = [result1,result2]
console.log(arr1[0]);

fs.writeFile('C:\\Data\\sr4_Intellij\\newman\\Collections\\api_collection.json', arr1, 'utf8', function (err) {
if (err) return console.log(err);
});

});

最佳答案

您需要对第一次替换的结果执行第二次替换data 不会被 replace 改变; replace 返回包含更改的新字符串。

所以:

var result = data.replace(/{{Name}}/g, 'abc')
.replace(/{{Address}}/g, 'xyz');

...然后将结果写入文件。

或者,如果文件很大或者您有很多不同的内容需要替换,则使用带有回调的单个 replace:

var replacements = Object.assign(Object.create(null), {
"{{Name}}": "abc",
"{{Address}}": "xyz"
// ...and so on...
});

var result = data.replace(/{{[^}]+}}/g, function(m) {
return replacements[m] || m;
});

或者使用 map :

var replacements = new Map([
["{{Name}}", "abc"],
["{{Address}}", "xyz"]
// ...and so on...
]);

var result = data.replace(/{{[^}]+}}/g, function(m) {
return replacements.get(m) || m;
});

关于javascript - 使用nodejs替换文件中的多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47153845/

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