【问题标题】:fs.readFileSync adds \r to the end of each stringfs.readFileSync 将 \r 添加到每个字符串的末尾
【发布时间】:2021-10-06 09:24:25
【问题描述】:

我正在使用let names = fs.readFileSync(namefile).toString().split("\n")。每当我这样做时

for(const name of names) {
   console.log(`First Name: ${name.split(" ")[0]} Last Name: ${name.split(" ")[1]}
}

姓氏部分末尾总是有\r,如何让它不添加\r

【问题讨论】:

    标签: node.js fs


    【解决方案1】:

    fs.readFileSync 不会在行尾添加任何内容,

    您尝试读取的文件使用的是CRLF 行结尾,这意味着每一行都以\r\n 序列结尾。

    你的文件真的是这样的:

    line1\r\nline2\r\nline3\r\n
    

    但是你的文本编辑器会对你隐藏这些字符。


    有两种不同的方法可以解决此问题。


    1. 更改文本编辑器中使用的行尾类型

    这是特定于 IDE 的,但如果您使用 Visual Studio Code,您可以在右下角找到该选项。

    单击它将允许您更改为LF 行尾,即行后跟一个\n 字符的序列。

    1. 替换不需要的\r 字符

    按照您的示例,我们可以使用 .replace 删除任何 \r 字符。

    let names = fs.readFileSync(namefile)
                  .toString()
                  .replace(/\r/g, "")
                  .split("\n")
    

    More on line endings

    【讨论】:

      猜你喜欢
      • 2016-07-20
      • 1970-01-01
      • 2012-08-03
      • 2017-04-10
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      相关资源
      最近更新 更多