Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】CSV::Parser::UnoptimizedStringIO::each_line()メソッドの使い方

each_lineメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

each_lineメソッドは、CSV::Parser::UnoptimizedStringIOクラスのインスタンスが保持する文字列データを、1行ずつ処理するために使用するメソッドです。CSV::Parser::UnoptimizedStringIOは、RubyのCSVライブラリの内部で、メモリ上の文字列データをあたかもファイルから読み込むかのように扱うための特殊なクラスです。

このメソッドは、指定されたオブジェクトに含まれる文字列全体を読み込み、標準の行区切り文字(通常は改行コード\n)で各行に分割します。そして、それぞれの行を順にブロックに渡して繰り返し処理を実行します。主にCSVライブラリが、文字列として受け取ったCSVデータを、内部で効率的に行単位で解析する際の仕組みとして活用されます。システムエンジニアの観点からは、CSVのパース処理において、文字列をストリームとして扱い、行ごとに内容を確認したり加工したりする内部的なロジックを実装する際に重要となります。ブロックが与えられた場合はレシーバ自身を返し、ブロックが与えられなかった場合は、各行を順次生成するEnumeratorオブジェクトを返します。この機能により、CSVデータの柔軟な処理が可能になります。

構文(syntax)

1unoptimized_string_io.each_line do |line|
2end

引数(parameters)

sep = $/, limit = nil, chomp: false

  • sep: 行の区切り文字を指定します。デフォルトは改行文字 ($/) です。
  • limit: 読み込む行数を制限します。nil の場合は制限がありません。
  • chomp: true に設定すると、各行の末尾から改行文字を取り除きます。デフォルトは false です。

戻り値(return)

Enumerator (ブロックなし), self (ブロックあり)

ブロックが渡されなかった場合は、各行を順番に返すEnumeratorオブジェクトを生成します。ブロックが渡された場合は、CSV::Parser::UnoptimizedStringIO オブジェクト自身を返します。

関連コンテンツ