javascript - 拆分后数组中存在制表符

标签 javascript arrays node.js

出于某种原因,我最终将 \r 附加到数组元素的末尾。这是从文件读取数据并用 \r 分割后发生的。文件读取是通过 Node 的文件系统(fs)模块实现的。

data.txt

Samuel  20  male
Benjamin    10  male
Fortune 20  female

代码如下所示:

const fs = require('fs');

let data = fs.readFileSync('data.txt', 'utf8' );

let rawData = data => { return data.split( '\n' ) };

let objData = data => { return data.map( data => { return data.split( '\t' ) } ) }

console.log( objData( rawData( data ) ) );

代码输出:

$ node reduce_example.js

[ [ 'Samuel', '20', 'male\r' ],
[ 'Benjamin', '10', 'male\r' ],
[ 'Fortune', '20', 'female' ] ]

我在 Node v9.5.0、v9.0.0v8.0.0 上运行了代码

最佳答案

文本文件使用 Windows 风格的行结束符,即“\r\n”,与 Unix 风格的行结束符“\n”相对(并且与旧的 Mac 风格的“\r”相对) )。 您可以在这里阅读有关这种差异及其产生方式的更多信息 - What is the difference between \r and \n?

要解决此差异,请更改此行:

let rawData = data => { return data.split( '\n' ) };

对此:

let rawData = data => { return data.split( '\r\n' ) };

但是,您可能会问自己,“如果我在具有 Unix 风格结尾的文件上运行此代码会发生什么?”这是一个很好的问题,但这是行不通的。要考虑两种样式的行结尾,您可以使用可选的 \r :

let rawData = data => { return data.split(/\r?\n/) };

关于javascript - 拆分后数组中存在制表符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50310629/

相关文章:

javascript - 如何创建 javascript 类或模块,我需要在页面上有 2 个实例

javascript - 在表单元素内打印 html 页面

javascript - 向 Kendo Grid 添加新行时文本空间不适合

java - 如何检查数组中的元素是否按照出现次数排序?

javascript - 基于 parentId 和 id 属性嵌套平面对象

node.js - 取回空的nodejs + firebase

node.js - Node-js 服务器安全性,带有反应 native 客户端

javascript - Node - 等待循环完成?

javascript - 用圆形区域填充二维数组

objective-c - 如何在 Objective-C 内联中声明好的旧 C 数组?