使用 Node.js 替换文件中的字符串

使用 Node.js 替换文件中的字符串

Replace a String in a File using Node.js

在 Node.js 中替换文件中的字符串:

  1. 使用fs.readFile()方法读取文件。
  2. 使用该replace()方法将字符串替换为替换。
  3. 使用方法将结果写入文件fs.writeFile()
索引.js
// 👇️ if using ES6 imports uncomment next line // 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在同一目录中有一个文件。确保也在同一目录中打开您的终端。
例子.txt
to be replaced to be replaced to be replaced

我们使用
String.replace
方法来替换文件中的字符串。

我们传递给该replace方法的第一个参数是正则表达式,第二个是替换字符串。

正斜杠/ /标记正则表达式的开始和结束。

g标志代表global并替换匹配字符串的所有匹配项。

如果省略g标志,则只会替换文件中第一次出现的字符串。

如果要执行不区分大小写的匹配,请i同时使用该标志。

索引.js
// 👇️ if using ES6 imports uncomment next line // 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; } // 👇️ match string case-insensitively 👇️ const replaced = contents.replace(/to be replaced/gi, 'replacement string'); writeFile('./example.txt', replaced, 'utf-8', function (err) { console.log(err); }); });

i标志代表ignore并在字符串中进行不区分大小写的搜索。

然后
使用
fs.writeFile
函数将更新后的字符串写入文件。

上面的例子假设代码放在一个.js文件中,并寻找一个example.txt文件。确保在同一目录中打开终端并运行带有. node index.js

或者,您可以使用承诺。

在 Node.js 中替换文件中的字符串:

  1. 使用fsPromises.readFile()方法读取文件。
  2. 使用该replace()方法将字符串替换为替换。
  3. 使用方法将结果写入文件fsPromises.writeFile()
索引.js
// 👇️ if using ES6 imports uncomment next line // 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 🎊');

这种方法达到相同的结果。但是,此代码示例使用承诺而不是回调。

fsPromises.readFile
()
方法异步读取所提供文件的内容。

如果您没有为encoding参数提供值,则该方法返回一个缓冲区,否则返回一个string

该方法返回一个使用文件内容解析的承诺,因此我们必须await使用它或使用该.then()方法来获取已解析的字符串。

fsPromises.writeFile
方法将
数据
异步写入文件以替换文件内容(如果文件已存在)。

发表评论