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

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

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

作成日: 更新日:

基本的な使い方

each_lineメソッドは、StringIOオブジェクトの内容を1行ずつ繰り返し処理を実行するメソッドです。StringIOオブジェクトは、メモリ上の文字列データをファイルのように扱えるため、このメソッドを使うことで、その文字列データを効率的に行単位で操作できます。

このメソッドにブロックを渡すと、StringIOオブジェクトに格納されている文字列の各行が、順番にブロック引数として渡され、ブロック内の処理が実行されます。たとえば、StringIOオブジェクトが複数の行からなるテキストデータを持っている場合、各行に対して特定の操作を行いたいときに非常に便利です。

ブロックを省略してeach_lineメソッドを呼び出した場合、直接処理を実行するのではなく、Enumeratorオブジェクトを返します。このEnumeratorオブジェクトを使うと、nextメソッドなどで1行ずつ値を取り出したり、他のEnumerableモジュールのメソッドと組み合わせて、より柔軟な処理を実現したりできます。

行の区切り文字は、デフォルトでは改行文字(\n)ですが、引数に任意の文字列を渡すことで、その文字列を行の区切りとして指定することも可能です。これにより、CSVデータなど、改行以外の特定の区切り文字でデータが構成されている場合でも、容易に行単位で処理できるようになります。ファイルI/Oにおける行読み込みと同様の感覚で、メモリ上の文字列を扱う際に活用できるため、テストコードの作成や一時的なデータ処理などで役立ちます。

構文(syntax)

1require 'stringio'
2
3io = StringIO.new("第一行\n第二行\n第三行")
4io.each_line do |line|
5  puts line.chomp
6end

引数(parameters)

sep = $/, chomp: false

  • sep = $/ : 区切り文字を指定する文字列。デフォルトは改行文字($/)。
  • chomp: false : 各行の末尾から区切り文字を取り除くかどうかを指定する真偽値。trueの場合、取り除かれます。

戻り値(return)

self または Enumerator

StringIOオブジェクト自身、または処理の各要素を順に返すEnumeratorオブジェクトを返します。

関連コンテンツ

関連プログラミング言語