【问题标题】:Split a text file into multiple text files nodejs将一个文本文件拆分为多个文本文件nodejs
【发布时间】:2021-07-22 01:05:51
【问题描述】:

我对 NodeJS 还很陌生。我有一个如下所示的文本大数据文件,我需要将每个块动态拆分为多个文本文件。如何使用 Nodejs 实现这一点?

大文件.txt

Name: John
Age: 18
Address: Washington

Name: Doe
Age: 23

Name: Randy
Address: Tennessee

预期的结果应该是这样的

约翰.txt

Name: John
Age: 18
Address: Washington

Doe.txt

Name: Doe
Age: 23

兰迪.txt

Name: Randy
Address: Tennessee

【问题讨论】:

  • 你能添加你想要的结果吗?
  • @BarLevin 添加了想要的结果

标签: javascript node.js node-modules


【解决方案1】:

您的问题是按行空格分隔内容吗?如果是这样,您可以使用split() 方法并用\n\n\r\n\r\n(两个换行符的字符)分割您的文本。

// required module
const fs = require('fs');

// read the file content
const str = fs.readFileSync('/path/to/alldata.txt');

// detect newline character
let newline = '\n';
let twonewlines = '\n\n';

if (str.indexOf('\r\n\r\n') > -1) {
  newline = '\r\n';
  twonewlines = '\r\n\r\n';
}

// split
let arr = str.split(twonewlines);

// save items as new files
arr.forEach((data, idx)=> {
  /* format of data will be:
   * Name: XX
   * Age: YY
   * Address: ZZ
   */

  // get name
  let firstRow = data.slice(0, data.indexOf(newline)); // get "Name: XX"
  let name = firstRow.split(': ')[1]; // get "XX"

  // write to file
  fs.writeFileSync(`/path/to/${name}.txt`, data);
});

您可以利用文件系统 (fs) 模块的承诺或回调版本来获得更好的性能。

【讨论】:

  • 没有。我预期的解决方案是将每个名称的数据块分开并将它们写入单独的文本文件。在我的帖子中添加了想要的结果。
  • 好的,我已经添加了从每个数据中检索名称并将其用作文件名的步骤。
  • 谢谢。你能解释一下 if 语句是如何工作的吗
  • 显示换行符有两种常见的样式。首先是使用\n 的POSIX 风格(在Unix 中),其次是使用\r\n 的Windows 风格。默认情况下,在 Linux/Mac 计算机上编写的文件将具有 \n 换行符。如果该文件是在 Windows 计算机上编写的,它将有 \r\n 用于换行。在程序中,我假设该文件是在 Linux/Mac 计算机上编写的,所以默认为 \n 换行符和\n\n 双换行符。但是,我们需要检查\r\n\r\n 是否存在。如果存在,则所有换行符都必须使用 Windows 样式,即\r\n\r\n\r\n 用于双换行符。
  • 我可以知道为什么它使用索引位置 [1] 而不是 [0] 来定义“//get XX”代码行吗?
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
相关资源
最近更新 更多