Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyで改行コードを削除するメソッドはchompです。しかし、ほぼ同じ機能chomp!メソッドやchopメソッドなどがあり、混同しがちです。そこで今回は、chompメソッドとchomp!メソッドの基本について、似ているメソッドと比較しながら解説します。

末尾の改行を削除する処理

テキストファイルを読み込んで処理に使用するプログラムがよく使われます。しかし、プログラムの中でそのテキストを使う場合、行の末尾にある改行コードを削除しなければなりません。もし、Rubyでテキストファイルを読み込む処理を作るなら、改行コードを削除することを考えてください。

まずは、テキストファイルの改行コードと、その削除手順を紹介します。

テキストの改行コード

テキストファイルは、文字コードが格納されたファイルですが、1行の終わりの必ず位置に改行コードが入っています。通常、テキストファイルから1行分を読み込み、それを分割してプログラム内で利用しますが、最後の文字列の後ろに改行コードが含まれると、意図した処理が動作しません。

また、改行コードは、WindowsやmacOSなどのOSによって違います。例えば、Windowsの改行コードは”\r\n”ですが、macOSの改行コードは”\r”、Linixの改行コードは”\n”など、全く違います。個別に対応すると、抜けが出るかもしれません。

そのため、プログラムの中でテキストファイルを利用する場合は、改行コードを削除するメソッドを利用します。

改行コードの削除は組み込む関数を使う

改行コードの削除は、Rubyなら文字列の置換で簡単に作れます。しかし、多くのプログラミング言語に、改行コードを削除する関数やメソッドが用意されているので、その関数を利用しましょう。

なお、Rubyの改行コードを削除する専用メソッドはchompです。

改行コードを削除する処理

先ほど説明したように、Rubyの改行コードを削除する専用メソッドはchompですが、改行コードを削除する処理をプログラムで書くのは難しくありません。例えば、Windows、macOS、Linuxで使われる改行コードをまとめて削除する処理は、gsub関数で次のように書けます。

文字列.gsub(/\R/."")

これは、文字列の置き換えをするメソッドのgsubに、正規表現を使って改行コードを削除する方法を使った例です。

ただし、正規表現を見て、処理内容をすぐに理解できる方は多くありません。そこで、組み込まれている関数やメソッドを利用することをお勧めします。先ほど、簡単に紹介したように、Rubyの場合は、shompメソッドを使います。

Rubyのchompを使った例

文字列.chomp

chmopメソッドの基本

次から、Rubyの改行コードを削除するchmodメソッドの文法や基本的な使い方などについて解説します。

chompの文法

chompは、Stringクラスのメソッドのため、文字列、または、文字列を格納した変数に対して使用します。また、chompの機能は、対象の文字列の末尾から改行コードを削除した新しい文字列の生成です。

なお、通常、”\r”, “\r\n”, “\n” のすべてを改行コードとみなして取り除きますが、引数に取り除く改行コードを指定することで、それだけを削除できます。

chmopの文法

文字列.chmop

または

文字列.chmop(改行コード)

なお、chompメソッドの対象になった文字列に、改行コードが含まれていない場合は、その文字列をそのまま返します。

簡単なchompの使用例

word = "Hello World\n".chmop
p word

この例を実行すると、改行コードの「\n」が削除された「”Hello World”」が表示されます。

chompの使い方

chmodメソッドの使い方で最も解り易い例は、標準入力から入力された改行コードを含む文字列を、プログラムの中で処理するために、改行コードのみ削除するケースです。

標準入力から入力された文字列を加工する例

input_text = fgets
datas = input_text.chomp
arr = datas.split(" ")
a = arr[0].to_i
b = arr[1].to_i
out = a + b
puts out

この例は、標準入力からスペースで区切られた2つの数字を入力し、その2つの数字を足した数字を出力するプログラムです。そして、文字列を数字に変換する際に改行コードがあると数字に変換できないので、chompメソッドを使って改行コードを削除した後に、分割し、数字に変換しています。

chmop!メソッドの基本

先ほど、Rubyのchmodメソッドについて解説しましたが、「!」が付いたchomp!というメソッドもあります。次からchomp!メソッドについて解説します。

chomp!メソッドの文法

chomp!メソッドは、chompメソッドと同じくStringクラスのメソッドで、対象の文字列の末尾から改行コードを削除した新しい文字列を生成します。また、通常、”\r”, “\r\n”, “\n” のすべてを改行コードとみなして取り除き、引数に取り除く改行コードを指定することで、それだけを削除できる点もchompメソッドと同じです。

ただし、chompメソッドは改行コードがなければ文字列をそのまま返しましたが、chomp!メソッドはnilを返す点が違います。

chmopの文法

文字列.chmop!

または

文字列.chmop!(改行コード)

chomp!の使い方

chomp!メソッドは、もし、対象の文字列に改行コードが含まれている場合、nilを返すので、それを判定に使うことが可能です。

chomp!メソッドの使用例

str = "Hello World"
out = str.chomp!
if out.nil? then
  out = "改行コードが含まれていません"
end
puts out

この例は、改行コードを削除する処理にchomp!を利用し、その結果がnilだった場合に「改行コードが含まれていません」を表示します。

chompと似た機能のメソッド

Rubyには、文字列の最後の文字を削除するメソッドとして、今回紹介するchompメソッドとchomp!メソッドを含めて4つあります。
(1) chompメソッド
(2) chomp!メソッド
(3) chopメソッド
(4) delete_suffix

そして、それぞれ機能が違っており、使い方ももちろん違います。次から、これまで解説していない、chopメソッドとdelete_suffixについて解説します。

chompメソッドとchopメソッドの違い

chompメソッドは、文字列の最後にある改行コードを削除するメソッドですが、chopメソッドは、文字列の最後の文字を削除するメソッドです。そして、chopメソッドは、chompメソッドと同じく、Stringクラスのメソッドで、文字列または文字列を格納した変数に対して使用します。

chopメソッドの文法

文字列.chop

なお、文字列の最後に改行コードがある場合、chopメソッドはchompメソッドと同じく改行を削除します。例えばWindowsのテキストの改行コードは”\r\n”の2文字ですが、改行コードとしてまとめて削除します。

しかし、最後の文字が改行でない場合、chmopコマンドはその文字列をそのまま返しますが、chopメソッドは最後の文字を削除して返すので、利用する場合は注意してください。

chopメソッドの例

str = "Hello World"
out = str.chop
p out

この例の結果は、”Hello Worl”で、元の文字列から「d」が削除されて出力されます。

chompメソッドとdelete_suffixメソッドの違い

delete_suffixメソッドは、文字列の最後から、引数で指定した文字列を削除するメソッドです。

delete_suffixメソッドの文法

文字列.delete_suffix(削除する文字列)

そして、delete_suffixメソッドに、削除する文字列として改行コードを指定した場合、chompメソッドと同じ処理が可能です。

delete_suffixメソッドで改行を削除する例

str = "Hello World\n"
out = str.delete_suffix("\n")
p out

まとめ

Rubyのプログラムでテキストファイルを利用する場合、1行の末尾にある改行コードが処理を邪魔します。そのため、読み込んだ直後に改行コードを削除しなければなりません。そして、通常テキストファイルで読んだ文字列から改行コードを削除する場合、専用の関数やメソッドを使います。

Rubyでは、文字列から改行コードを削除するのにchompメソッドを使います。また、chomp!も機能は同じですが、違った使い方が可能です。

ぜひ、chompメソッドおよびchomp!メソッドの使い方をマスターしてください。また、Rubyには、chompと同じような機能のメソッドがよくあります。それらと混同しないようにしましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。