扫码一下
查看教程更方便
在 Node.js 中替换文件中的字符串:
fs.readFile()
方法读取文件。replace()
方法将字符串替换为目标字符串。fs.writeFile()
方法将结果写入文件。// 如果使用 ES6 导入,请取消注释下一行
// import {readFile, writeFile, writeFileSync, promises as fsPromises} from 'fs';
const {readFile, writeFile, promises: fsPromises} = require('fs');
readFile('./example.txt', 'utf-8', function (err, contents) {
if (err) {
console.log(err);
return;
}
const replaced = contents.replace(/to be replaced/g, 'replacement string');
writeFile('./example.txt', replaced, 'utf-8', function (err) {
console.log(err);
});
});
我们使用 fs.readFile
方法来读取文件的内容。
我们传递给该方法的第一个参数是文件的路径,第二个参数是编码。
如果省略 encoding 参数,该函数将返回一个缓冲区,否则返回一个字符串。
如果没有错误和文件内容,则使用错误对象或 null 调用回调函数。
上面的代码片段假设有一个 example.txt 文件位于同一目录中。 确保也在同一目录中打开我们的终端。
to be replaced
to be replaced
to be replaced
我们使用 String.replace
方法替换文件中的字符串。
我们传递给 replace 方法的第一个参数是正则表达式,第二个参数是替换字符串。
正斜杠 //
标记正则表达式的开始和结束。
g
标志代表全局并替换所有匹配字符串的出现。
如果省略 g 标志,则只会替换文件中第一次出现的字符串。
如果要执行不区分大小写的匹配,也请使用 i 标志。
// 如果使用 ES6 导入,请取消注释下一行
// import {readFile, writeFile, writeFileSync, promises as fsPromises} from 'fs';
const {readFile, writeFile, promises: fsPromises} = require('fs');
readFile('./example.txt', 'utf-8', function (err, contents) {
if (err) {
console.log(err);
return;
}
// 区分大小写
const replaced = contents.replace(/to be replaced/gi, 'replacement string');
writeFile('./example.txt', replaced, 'utf-8', function (err) {
console.log(err);
});
});
i
标志代表忽略并在字符串中进行不区分大小写的搜索。
然后使用 fs.writeFile
函数将更新后的字符串写入文件。
上面的示例假定代码放置在 .js 文件中并查找 example.txt 文件。 确保在同一目录中打开您的终端并使用节点 index.js 运行该文件。
或者,我们可以使用 promise
。
在 Node.js 中替换文件中的字符串:
// 如果使用 ES6 导入,请取消注释下一行
// import {readFile, writeFile, writeFileSync, promises as fsPromises} from 'fs';
const {readFile, writeFile, promises: fsPromises} = require('fs');
async function replaceInFile(filename, replacement) {
try {
const contents = await fsPromises.readFile(filename, 'utf-8');
const replaced = contents.replace(/to be replaced/gi, replacement);
await fsPromises.writeFile(filename, replaced);
} catch (err) {
console.log(err);
}
}
replaceInFile('./example.txt', 'replacement string ‘);
方法是相同的,但是此示例使用 Promise 而不是回调。
fsPromises.readFile()
方法异步读取所提供文件的内容。
encoding
参数提供值,则该方法返回一个缓冲区,否则返回一个字符串。.then()
方法来获取已解析的字符串。如果文件已存在,fsPromises.writeFile
方法将数据异步写入文件替换文件的内容。