こんにちは! エンジニアのヤマギシです。
文字列を扱っていると、文字列の改行コードを削除したり、文字列を分割したい場合もあります。
「文字列から改行コードを取り除きたい」
そこで、今回はRubyのeach_lineについてわかりやすく解説していこうと思います。
each_lineの概要
each_lineの書き方や使い方
文字列のさまざまな分割方法
each_lineについて初心者でも理解できるようにわかりやすく解説していますので、ぜひ参考にしてください。
each_lineとは
each_lineメソッドとは、文字列を1行ずつ読み込み、文字列の改行を取り除いてくれるメソッドです。
ただ、実際に使用するには文字列操作だったりeachメソッド、ヒアドキュメントなどについても理解しておかなくてはなりません。
eachメソッドの概要や書き方などについてはこちらの記事をご参照ください。
eachメソッドはRubyで繰り返し処理を実行するにあたり、基本的かつよくとても使用するメソッドの一つなのでしっかりと覚えておきましょう!
each_lineを実際に使ってみよう
では、さっそくeach_lineメソッドの解説をしていこうと思います。
# ヒアドキュメント St = <<'EOS' aaa bbb ccc EOS # each_lineメソッド St.each_line do |ブロック変数| 処理 end
こちらがeach_lineメソッドを使うための型です。
まず、一番上にヒアドキュメントという書き方でそれぞれの文字列をStに格納してあげます。
ヒアドキュメントは改行コード含め文字列などのデータを扱いたいときに使います。
「<<」という識別子を使い、その後ろにヒアドキュメントの開始と終了を表すEOS(End Of String)とEOL(End Of Line)を書くことで機能します。
ちなみに、EOSとEOLはヒアドキュメントの習わしで使っているだけであって、ヒアドキュメントの開始と終了は特に指定はないのでEOSやEOLでなくてもかまいません。
ただ、開始と終了は同じ文字列にしてあげる必要がありますのでご注意ください。
ここで前準備は完了で、その後each_lineメソッドで処理を行う流れとなっております。
each_lineメソッドでは、ヒアドキュメントで使ったStにそれぞれの文字列および改行コードが格納されているので、上記のような書き方で結果を出力します。
ブロック変数は任意の文字列でかまいません。
では実際のサンプルコードを見ていきましょう!
json = <<'EOS' PHP Ruby JavaScript EOS json.each_line do |line| p line.chomp end
[出力結果]
"PHP" "Ruby" "JavaScript"
まず、ヒアドキュメントの書き方でjsonへそれぞれデータを格納しています。
その後、each_lineメソッドで処理を行っております。
処理の箇所にchompというメソッドを使用しております。
こちらは本来、表示されない文字である改行コードを取り除いて表示します。
もしchompメソッドを使用しない場合ですと、
"PHPn" "Rubyn" "JavaScriptn"
このように改行コードの『n』も出力されてしまいます。
デフォルトの状態ですと『n』は改行文字として判断されないためchompメソッドを使う必要があります。
chompメソッドは、ヒアドキュメントやeach_lineメソッドと併せてよく使うので覚えておきましょう!
文字列のさまざまな分割方法
さて、これまで
などについて学んできました。
ただ、今回ご紹介したeach_lineメソッドについては少し応用的な要素が強いです。
そこで、こちらの記事で基本からさまざまな分割方法をご紹介しております。
具体的には、以下のような内容を解説していますのでぜひご覧になってください。
- 基本的な文字列
- 改行で分割
- 空白で分割
- 一文字ずつ分割
- 正規表現で分割
- 分割数を制限
まとめ
さていかがでしたでしょうか。
今回はeach_lineメソッドを中心にヒアドキュメントやchompメソッドを解説してきました。
each_lineメソッドはフォームなどで入力した改行入りの文字列を一行ずつ区切ってDBに入れたりする際によく使います。
もちろんヒアドキュメントやchompメソッドもセットで使う機会が多いので、実際に使ってみてくださいね。