fs.readFileSync 将 \r 添加到每个字符串的末尾

1 fs node.js

我在用着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]}
}
Run Code Online (Sandbox Code Playgroud)

姓氏部分总是\r在末尾,如何使其不添加\r

lej*_*lun 8

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

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

实际上你的文件看起来像这样:

line1\r\nline2\r\nline3\r\n
Run Code Online (Sandbox Code Playgroud)

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


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


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

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

在此输入图像描述

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

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

根据您的示例,我们可以用来.replace删除任何\r字符。

let names = fs.readFileSync(namefile)
              .toString()
              .replace(/\r/g, "")
              .split("\n")
Run Code Online (Sandbox Code Playgroud)

更多关于行尾