【问题标题】:How do you split a text file using the split method in NodeJS?如何使用 NodeJS 中的 split 方法拆分文本文件?
【发布时间】:2019-04-28 19:23:03
【问题描述】:

我想拆分一个使用 NodeJS FS 读取的文本文件。当我尝试时,它会返回一个包含编码信息的数组。

我已经尝试解码数组,但它没有返回任何内容。

代码:

const fs = require("fs"); 
var data = fs.readFileSync("data.txt", 'utf-8'); 
var dataArr = data.split('s');  
console.log(dataArr); 

输出:

[ '��t\u0000e\u0000', '\u0000t\u0000' ]
[ '��t\u0000e\u0000', '\u0000t\u0000' ]

文本文件:

test

我希望它返回:

["te", "t"]

【问题讨论】:

  • 在这里工作正常,检查data.txt的内容
  • 需要将流数据转成字符:var dataArr = data.toString().split('s');

标签: node.js fs


【解决方案1】:

根据nodejs 网站fs.readFileSync 返回BufferString。最好的方法是使用fs.readFileSync 而不使用uft-8 选项,然后使用toString('utf8') 将缓冲区更改为uft-8

代码中的示例

const fs = require("fs"); 
var data = fs.readFileSync("data.txt"); 
var dataArr = data.toString('utf8').split('s');  
console.log(dataArr); 

【讨论】:

  • If the encoding option is specified then this function returns a string 并且 OP 已经这样做了
  • 对我来说,这仍然输出[ '��t\u0000e\u0000', '\u0000t\u0000' ]当我做var dataArr = data.toString('utf8')时,它输出��t e s t
  • @SASSY_ROG 这在技术上回答了这个问题,因为它将它转换为字符串,但我希望它在解码时转换为“测试”,就像在文本文件中一样。