如何在Node中读出带换行符的txt文件

How to Read Out txt File with Line Breaks in Node

我正在尝试使用节点中的 fs 模块输出带有换行符的 txt 文件。

试用 #1 - UTF8 编码

let list = req.body.L_.replace(/['"]+/g, '').replace(/\r\n/gi, '\0x0D')

fs.writeFile('./_log/L_.replace(/\"/g, "") + '.txt', list, 'utf8', (err) => {
    if (err) throw err
})

输入

"0  1   ITEM    \r\n    2   2   ITEM    \r\n"

输出

0   1   ITEM    \u0A0   2   2   ITEM    \u0A

预期输出

0   1   ITEM
2   2   ITEM

试用 #2 - 默认节点 fs 编码

let list = req.body.L_.replace(/['"]+/g, '')

fs.writeFile('./_log/L_.txt', list, (err) => {
    if (err) throw err
})

输入

"0  1   ITEM    \r\n    2   2   ITEM    \r\n"

输出

0   1   ITEM    \u0A0   2   2   ITEM    \u0A0

预期输出

0   1   ITEM
2   2   ITEM

试用 #3 - 默认节点 fs 编码

let list = req.body.L_.replace(/['"]+/g, '')

fs.writeFile('./_log/L_.txt', list, (err) => {
    if (err) throw err
})

输入

"0  1   ITEM    \r  2   2   ITEM    \r"

输出

0   1   ITEM    2   2   ITEM

预期输出

0   1   ITEM
2   2   ITEM

根据评论进行编辑:

这不是 nodejs 问题。听起来记事本编码不存在。我记得几年前用 nodepad 查看服务器日志,它们也都在一条线上。我建议使用不同的文本文件 reader 例如 Sublime 或 Notepad++


当我 运行 您拥有的 .replace 代码时,它对我来说工作正常。下面我根据您的示例创建了一个测试字符串。我已经转义了一些 javascript 会解释的字符。然后调用您的替换方法。你可以看到结果是在

之后
var s = "\"0  101    1  102        XYZ    15141                          144                Test                      \n\""
var s2 = s.replace(/['"]+/g, '');
// s2 is 0  101    1  102        XYZ    15141                          144                Test                      \n

在您的示例中,您没有调用 replace 方法。这让我相信你叫错了。替换方法 returns 一个新字符串,不影响原始字符串。

我建议这样(存储很便宜)

var num = JSON.stringify(req.body.number).replace(/\"/g, "");
var list = JSON.stringify(req.body.list).replace(/['"]+/g, "");
list = list.replace(/[ ]+/g, "\t"); // Replaces the spaces with a single tab
fs.writeFile('./_log' + num + '.txt', list, (err) => {
  if (err) throw err
})