如何将.txt文件拆分为数组? (应该可以,但是不能)

时间:2019-08-10 06:18:40

标签: javascript node.js

我正在尝试将.txt文件中的每一行都转换为数组的元素

错误:它只是将所有内容放在1个单元格中:

[ 'Game1 | 111111\rGame2 | 22222\rGame3 | 333333\rGame4 | 444\rGame5 | 555555555\rGame6 | 6666666666' ]

我尝试读取文件,然后使用split(它可以工作,但是现在它只将所有内容放入1个数组单元中)

fs.readFile("./SETTINGS/txt.txt", "utf8", (error, data) => {
  if(error) {
    callback("Error loading database",{});
  } else {
    let keys = data.split("\n");
});

期望将txt文件分成一个数组(每个单元格中的一行)

3 个答案:

答案 0 :(得分:0)

看起来您的字符串用“ \ r”分隔。尝试拆分或“ \ r \ n”。您还可以构建更高级的正则表达式,以识别多个换行符。

答案 1 :(得分:0)

在读取文件之前,可能正在执行split()。使用fs.readFileSync()代替

  

同步-是另一步骤。在第一步完成之前,第二步甚至不会被执行。非常简单,但是它确实将io挂在了必须完成的一项任务上。其他所有内容都被暂停。

     

异步-以四分卫的第一掷惯性移动。代码已处理,但是在执行过程中,您可能希望使其等待或检查任务是否完成。

     

是泰德·格罗斯从Node.js — Sync? Async? Speak English, Please!摘录的

完整代码:

const fs = require('fs')
const path = require('path')

// create normalized path for windows and os 
const filepath = path.join('SETTINGS','txt.txt')

const file = fs.readFileSync(filepath, 'utf8')
const lines = file.split('\n')

console.log(lines)

View in CodeSandbox

答案 2 :(得分:0)

如果看到特殊的转义字符,它们是\r而不是\n。代替这些:

let keys = data.split("\r");

或者使用正则表达式对它们进行拆分,无论哪个起作用。您稍后也可以毫不费力地向其中添加其他字符。

let keys = data.split(/\r|\n/);