【问题标题】:Node.js Array to text with newlineNode.js 数组到带有换行符的文本
【发布时间】:2018-12-10 04:25:43
【问题描述】:

我想将数组转换为文本文件,并用换行符分隔每个条目。

我发现了一个名为 array-to-txt-file 的 npm 包。 这是网页: array-to-txt-file

这个包声称它将用换行符连接数组的每个元素,以便数组的每个元素出现在文本文件中自己的行上。

所以我试了一下,虽然效果很好,但它不会用换行符连接元素。一个元素结束,另一个元素开始。

所以我看了一下包的源代码,这是产生这种效果的代码。

try {
    array.forEach(v => {
      if(_.isPlainObject(v)) {
        ws.write(`${JSON.stringify(v)}\n`)
        return
      }
      ws.write(`${v}\n`)
    })

尤其是ws.write(${v}\n) 部分。

然后我将输出文本文件导入十六进制编辑器。在十六进制编辑器中,每个元素之间都有点。现在,这个点与普通点不同。

虽然常规点的十六进制值是 2E,但出现在元素之间的点是 0A。 另请注意,我使用的是 Windows 7,当使用记事本查看时,元素之间没有出现任何内容 - 一个结束,另一个直接开始。

那么有没有办法修改我上面发布的代码中的那一行,所以它真的在那部分创建了一个换行符?

【问题讨论】:

  • 请在此处将输出文件作为代码添加到您的问题中,或将其上传到 pastebin.com 等网站的某个位置并在此处链接。
  • 您使用哪个文本编辑器查看文件内容?
  • Windows 7 上的 Notepad.exe 不处理仅使用 \n 的新行。

标签: javascript arrays node.js file hex


【解决方案1】:

简单的join 不适合您是因为什么原因?

let arr = ["a", "b", "c", "d", "e", "f"];

console.log(arr); // [ 'a', 'b', 'c', 'd', 'e', 'f' ]

console.log(arr.join('\n'));
// a
// b
// c
// d
// e
// f

let text = arr.join('\n');

fs.writeFileSync('modified.txt', text, "utf8");

如果您需要,您可以按照@Saif 的建议在连接中将\n 替换为\r\n,但我似乎不需要,也许vscode 会自动为我执行此操作。我在 Windows 机器上。

【讨论】:

    【解决方案2】:

    在 Linux 上,\n 代表新行。

    \r\n 两个字符组合在 Windows 上代表一个新行。

    尝试在模块的index.js 文件内的write 语句中将\n 替换为\r\n

    那些点代表不可打印的字符。而常规点. FULL STOP (U+002E) 则由2E 表示。

    更多信息:https://en.wikipedia.org/wiki/Newline

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 2018-09-27
      • 2016-04-05
      • 2021-10-19
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      相关资源
      最近更新 更多