2012-04-07 342 views
1

如何從Ruby文件中一次讀取多行文件?從文件中讀取多行文件

我嘗試使用each_slice(2),也做了:require 'enumerator',但它不起作用。我收到以下錯誤:

undefined method `each_slice' for #<String:0x877d12c> (NoMethodError) 
+1

你怎麼定義「線」,你是如何得到這個數據?它是在一個字符串中還是正在從文件中讀取? – 2012-04-07 21:14:27

+0

我以爲我在標題中解釋它,它在一個文件中! – bytebiscuit 2012-04-07 21:24:51

+1

@bytebiscuit:如果沒有您嘗試使用的*代碼*,錯誤消息是無用的。只是告訴我們你使用'each_slice'沒有幫助,因爲你顯然是以錯誤的方式使用它(在一個字符串上?)。您的代碼也會告訴我們您嘗試閱讀的來源。 – 2012-04-07 21:26:28

回答

7

兩個IOStringlines枚舉,您可以致電each_slice

irb(main):004:0> STDIN.lines.each_slice(2).take(2) 
a 
a 
b 
c 
=> [["a\n", "a\n"], ["b\n", "c\n"]] 

當然,你可以與任何其他IO實例替代STDIN(打開文件)。演示用的字符串:

irb(main):005:0> "a\na\nb\nc".lines.each_slice(2).to_a 
=> [["a\n", "a\n"], ["b\n", "c"]] 

在Ruby中,這些工作都> = 1.8.7

+0

thnx爲了澄清與此代碼,我明白了吧! – bytebiscuit 2012-04-07 21:31:05

+1

@Niklas完美的工作,但是在Ruby ruby​​ 2.0中,它給出了一個警告:'IO#行被棄用;使用#each_line來代替'。 因此,用'STDIN.each_slice(2).take(2)'代替上述行代替。 – 2016-05-17 19:41:22