使用nodejs替换文件中的多个字符串
Replace multiple strings in a file using nodejs
我有一个 json 文件,我想在其中使用节点 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);
});
});
您需要对第一次替换的结果执行第二次 replace
。 data
没有被 replace
改变; replace
returns 一个新的字符串。
所以:
var result = data.replace(/{{Name}}/g, 'abc')
.replace(/{{Address}}/g, 'xyz');
...然后将 result
写入文件。
或者,如果它是一个大文件或者您有很多不同的东西要替换,这特别有用,请使用 single 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;
});
我有一个 json 文件,我想在其中使用节点 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);
});
});
您需要对第一次替换的结果执行第二次 replace
。 data
没有被 replace
改变; replace
returns 一个新的字符串。
所以:
var result = data.replace(/{{Name}}/g, 'abc')
.replace(/{{Address}}/g, 'xyz');
...然后将 result
写入文件。
或者,如果它是一个大文件或者您有很多不同的东西要替换,这特别有用,请使用 single 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;
});