Ruby中的系统新行分隔符

时间:2011-11-03 13:20:19

标签: ruby newline

如何在Ruby中确定OS(LF,CR / LF或其他)使用的新行分隔符?

3 个答案:

答案 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。