gpt4 book ai didi

ruby - 如何确定 Ruby 中的行尾类型

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:29 24 4
gpt4 key购买 nike

我正在使用 CSVLint对平面文件运行一些验证。文件的来源可以有不同的行尾,有些是 \n,有些是 \r\nValidator 构造函数采用一个 dialect 参数,我需要在其中指定行结束类型。

是否有一种好的/快速/简单的方法来对平面文件的第一行进行采样以确定 Ruby 中的行结束类型?

更新

下面的答案是我问题的正确答案。但是,如果您需要在 CSVLint 中自动换行,请在方言中尝试:

"lineTerminator" => :auto

此外,@sawa 在下面的回答与我寻找 \r\r\n 的原始问题(和拼写错误)有关。

最佳答案

要检测 \n\r\n 行尾,只需将第一行与正则表达式匹配 /\r?\n$/:

def determine_line_ending(filename)
File.open(filename, 'r') do |file|
return file.readline[/\r?\n$/]
end
end

determine_line_ending('./windows_file.csv')
# => "\r\n"

determine_line_ending('./unix_file.csv')
# => "\n"

这不会处理像 Mac OS 9(2001 年停产)\r 行结束这样的奇怪边缘情况,但涵盖了所有其他内容。如果你想了解历史行尾的背景,Wikipedia article很有趣。

关于ruby - 如何确定 Ruby 中的行尾类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com