• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2行読み込んで一行戻り、また2行読み込む)

「2行読み込み、一行戻り、また2行読み込む」処理の実現方法

このQ&Aのポイント
  • Rubyを使用して、「2行読み込み、一行戻り、また2行読み込む」処理を実現したい場合、以下のようなコードを使用します。
  • ファイルをオープンし、`gets`メソッドを使用して一行ずつ読み込みます。
  • `gets`メソッドで読み込んだ行の改行文字を削除するために、`chomp`メソッドを使用します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

逆にお聞きします。 1行「戻らないと」ダメなのですか? 例えば f = nil while g = file.gets do  g.chomp!  unless f.nil? then   p f   p g  end  f=g end と、前の行を変数に取っておく、という方法もあります。 どうしても戻るのなら、2行目を読む前にtell / posで場所を覚えてseek / posで移動するというのはありますが、何度もファイルを行き来して読むのは効率はよくないです。 file_position=0 while f = file.gets do  f.chomp! file_positon = file.pos g = file.gets # ここでg==nil(→ファイルがfを読んだところで終り)のチェックが無いので # 次のchompで # abcde.rb:9: private method `chomp!' called for nil:NilClass (NoMethodError) #のエラーになってます g.chomp!  p f  p g file.pos = file_positon end

Fournines
質問者

お礼

返信ありがとうございます。 変数でとっておくということも考えましたが、おっしゃるようにどうしても戻る必要がありました。 .pos .seek(i) というのがあったのですね。 エラーですが if g == nil then break を付けて直しました。 ありがとうございました。

関連するQ&A