我正在尝试将.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文件分成一个数组(每个单元格中的一行)
答案 0 :(得分:0)
看起来您的字符串用“ \ r”分隔。尝试拆分或“ \ r \ n”。您还可以构建更高级的正则表达式,以识别多个换行符。
答案 1 :(得分:0)
在读取文件之前,可能正在执行split()
。使用fs.readFileSync()
代替
同步-是另一步骤。在第一步完成之前,第二步甚至不会被执行。非常简单,但是它确实将io挂在了必须完成的一项任务上。其他所有内容都被暂停。
异步-以四分卫的第一掷惯性移动。代码已处理,但是在执行过程中,您可能希望使其等待或检查任务是否完成。
完整代码:
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)
答案 2 :(得分:0)
如果看到特殊的转义字符,它们是\r
而不是\n
。代替这些:
let keys = data.split("\r");
或者使用正则表达式对它们进行拆分,无论哪个起作用。您稍后也可以毫不费力地向其中添加其他字符。
let keys = data.split(/\r|\n/);