Rubyで末尾の改行文字を取り除く方法:chomp, chomp!

Ruby の chomp, chomp! メソッドを使って文字列の改行コードを取り除く方法について説明します。

表示されない文字である改行文字(改行コード)を入れます。また文字列の区切りの意味でも改行文字が使われます。

chompメソッドの使い方

chomp メソッドの書式は以下の通りです。文字列データのオブジェクトをレシーバーにして実行します。

以下のようなヒアドキュメントで書かれた文字列 str があるとします。

この各行の最後に一斉に “様” を付けたいとします。

str の各行を1つずつ取り出す each_line を使い、変数 line に対して chomp メソッドを実行します。

このプログラムをコマンドラインで実行した場合の結果は以下のようになります。

chomp メソッドを使わない以下のようなプログラムを実行してみます。

同じくコマンドラインでプログラムを実行すると、以下のような結果となります。

\n は、改行コードです。これをブラウザで実行すると以下のように改行されて表示されます。

chomp と chomp! を比較する

chomp! は、chomp メソッドの破壊的メソッドです。chomp メソッドは、実行されても文字列に影響は及ぼしませんが、chomp! メソッドは、文字列に影響を与えます。

まず、chomp メソッドを使ったコードを実行します。

その結果は、以下のようになります。変数 line の文字列が、chomp メソッドの実行後も変更されていないことがわかります。

次に、chomp! メソッドを実行します。

その結果は、以下のようになります。chomp! は行末の改行を取り除き、変数 line そのものに影響を及ぼします。

chompには文字データの行末の改行文字を取り除く働きがあります。元の文字データには変化ありません。

chomp! は同様に行末の改行文字を取り除く働きがありますが、元のデータそのものを変えます。元のデータを変えても問題ないときや積極的に変えたいときには chomp! を使います。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて