如何在Ruby中确定OS(LF,CR / LF或其他)使用的新行分隔符?
答案 0 :(得分:8)
不确定是否有直接解决方案来获取基于操作系统的换行符类型,但是有$/
变量保存“输入记录分隔符”。默认情况下,这将是“\ n”。 (Documentation here)
您可以检测操作系统,然后将$/
设置为“正确”值。
检测操作系统:
puts RUBY_PLATFORM # => 'i386-linux'
require 'rbconfig'
puts Config::CONFIG['target_cpu'] # => 'i386'
puts Config::CONFIG['target_os'] # => 'linux'
puts Config::CONFIG['host_cpu'] # => 'i686'
puts Config::CONFIG['host_os'] # => 'linux-gnu'
另外请记住,在阅读文件时,它们可能混合使用各种行分隔符 - 例如,如果在Windows和Linux中都编辑了文本文件。因此,如果您正在处理文件,请不要仅依赖“OS line seperator”。
答案 1 :(得分:0)
File.open("some_temporary_file", "w") { |file| file.puts }
new_line_separator =
File.open("some_temporary_file", "rb") { |file| file.read }
答案 2 :(得分:-1)
你不应该这样做。在您的情况下,我认为您可以使用FileUtils。