我有一个json文件,我想在其中使用节点js的fs将两个新单词替换为单词。我在Replace a straing 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);
});
});
答案 0 :(得分:1)
您需要对第一次替换的结果执行第二次replace
。 data
未对replace
进行更改。 replace
返回带有更改的新字符串。
所以:
var result = data.replace(/{{Name}}/g, 'abc')
.replace(/{{Address}}/g, 'xyz');
...然后将result
写入文件。
或者,如果它是一个大文件或者你需要替换很多不同的东西,这个特别有用,请使用带回调的单个 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;
});