CSVテキストの最終行を削除しようと思った時に結構てこづったのでその方法をメモしておきます。
やりたいこと
↓の最後に出現する改行以降を削除したい。
csv_text = <<~CSV_TEXT
りんご,apple
みかん,orange
イチゴ,strawberry
バナナ,banana #この行を削除したい
CSV_TEXT
正規表現で最終行を削除
gsubを使って最終行を削除します。
csv_text = <<~CSV_TEXT
りんご,apple
みかん,orange
イチゴ,strawberry
バナナ,banana #この行を削除したい
CSV_TEXT
csv_text.gsub(/(\r\n|\r|\n).*\z/, '')
# => りんご,apple
# => みかん,orange
# => イチゴ,strawberry
どの改行コードがきてもいいように (\r\n|\r|\n) で改行コードを指定します。
\zはファイルの末尾にマッチするので、これで最後の行のみを削除することができます。
ちなみに末尾表現としてよく使われる$は行の末尾にマッチするので、これを使うとみかん,orange以下の行が全て削除されてしまうので注意です。