如何从Ruby中的文件一次读取多行?
我尝试使用each_slice(2)
并执行了:require 'enumerator'
,但它不起作用。我收到以下错误:
undefined method `each_slice' for #<String:0x877d12c> (NoMethodError)
答案 0 :(得分:7)
IO
和String
都有一个lines
枚举器,您可以在each_slice
上调用{/ 1}}:
irb(main):004:0> STDIN.lines.each_slice(2).take(2)
a
a
b
c
=> [["a\n", "a\n"], ["b\n", "c\n"]]
当然,您可以将STDIN
替换为任何其他IO
实例(打开文件)。用字符串演示:
irb(main):005:0> "a\na\nb\nc".lines.each_slice(2).to_a
=> [["a\n", "a\n"], ["b\n", "c"]]
这两项都适用于Ruby&gt; = 1.8.7