javascript - 检测换行类型

标签 javascript node.js

在 JavaScript 中确定文本中使用的换行符类型的最有效(足够快速和可靠)的方法是什么 - Unix 与 Windows。

在我的 Node 应用程序中,我必须读取大型 utf-8 文本文件,然后根据它们是使用 Unix 还是 Windows 换行符来处理它们。

当不确定换行符的类型时,我想根据最有可能的换行符来得出结论。

更新

根据我自己在下面的回答,code I ended up using .

最佳答案

谢谢@Sam-Graham .我试图产生一种优化的方式。此外,该函数的输出可直接使用(参见下面的示例):

function getLineBreakChar(string) {
    const indexOfLF = string.indexOf('\n', 1)  // No need to check first-character
    
    if (indexOfLF === -1) {
        if (string.indexOf('\r') !== -1) return '\r'
        
        return '\n'
    }
    
    if (string[indexOfLF - 1] === '\r') return '\r\n'
    
    return '\n'
}

注意 1:假定 string 是健康的(仅包含一种类型的换行符)。

注意 2:假设您希望 LF 为默认编码(当未找到换行符时)。


使用示例:

fs.writeFileSync(filePath,
        string.substring(0, a) +
        getLineBreakChar(string) +
        string.substring(b)
);

这个实用程序也可能有用:

const getLineBreakName = (lineBreakChar) =>
    lineBreakChar === '\n' ? 'LF' : lineBreakChar === '\r' ? 'CR' : 'CRLF'

关于javascript - 检测换行类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820267/

相关文章:

node.js - Angular 2+ http.get() 卡在待处理状态

javascript - 来自 vuex 的 @click 在 vue 组件上不起作用

javascript - 在 angular/angularjs 混合应用程序中将 downgradeModule 与 downgradeInjectable 结合使用会导致错误

javascript - CSS 转换不适用于 UL 列表上的最大高度切换

node.js - 将数组从 JSON 文件导入 Typescript 文件

javascript - 类型错误 : Super expression must either be null or a function

javascript - 在 Node js失败后重试自己

node.js - 返回方法中仅显示未定义。如何获取回调?

javascript - 动态加载 jQuery

javascript - 如何在jquery中添加标签