• WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

Web Camp【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
9月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
8月受入枠は満員となっております。9月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

Rubyには、文字列を扱うためのメソッドが豊富に準備されています。

そのおかげで、他のプログラム言語であれば自作しなければいけないことが多い、文字列の反転や繰り返し処理なども、簡単に使えるのです。

今回は、そんな便利なメソッドの1つchompメソッドについて、詳しく解説します。

簡単な使い方はもちろん、少し複雑だが使い勝手のある使いどころまで、しっかり説明しますので、ぜひお読みください。

なお、合わせて、名前も動きもよく似た、chopメソッドとの違いについても紹介します。

Rubyのchompとは?

chompメソッドは、文字列の末尾にある改行文字を削除するメソッドです。

RubyのStringクラスに定義されているメソッドは多数ありますが、chompメソッドはその中でも、特に限られた機能だけを行うメソッドと言えるでしょう。

ただ、単純に末尾の改行を削除するといっても、改行には複数の種類がありますので、じつは単純ではありません。

改行文字の種類?

改行文字に複数の種類があると言われても、制御文字の一種ですので、あまり意識したことがない人の方が多いかもしれません。

制御文字というのは、65種類存在しています。そのほとんどは周辺機器(プリンタなど)との通信の制御に使われる記号で、改行文字も行末を表現する記号なのです。
(プリンタで印刷するときに、プリンタヘッダを動かして次の行の先頭へ移動するタイミングを知るための記号になります)

ただ、この制御文字は周辺機器のメーカーによって微妙に違っているものもありました。改行もその1つで、CR(キャリッジリターン)とLF(ラインフィード)の2つの文字とその組み合わせの3パターンの改行文字が存在しています。

Rubyでの表現 制御文字表現 よく使われているシステム
\n LF(ラインフィード)
(改行、0x0A)
UNIX
\r CR(キャリッジリターン)
(復帰、0x0D)
Apple Mac
\r\n CR LF
(0x0D 0x0A)
Microsoft Windows

chompメソッドは、これらの改行文字が末尾にあった場合、削除することができます。

確認してみましょう。

puts("--- original -----")
lf = "Banana\n"
cr = "Peach\r"
crlf = "Apple\r\n"
lflf = "Straw\nberry\n\n" 
print(lf, cr, crlf, lflf)
puts("------------------")

puts("--- chomp -----")
chomp_lf = lf.chomp
chomp_cr = cr.chomp
chomp_crlf = crlf.chomp
chomp_lflf = lflf.chomp
print(chomp_lf, chomp_cr, chomp_crlf, chomp_lflf)
puts("---------------")

(結果)

--- original -----
Banana
Peach
Apple
Straw
berry

------------------
--- chomp -----
BananaPeachAppleStraw
berry

---------------

少しわかりにくいかもしれませんが、結果の「--- original -----」と「------------------」に囲まれているのが、元々の文字列です。lf「Banana」、cr「Peach」、crlf「Apple」それぞれの文字列の末尾には、種類の違う改行文字があります。また、lflf「Straw\nberry\n\n」は文字列の途中と末尾に2つの改行文字が入っています。

その後、書く文字列に対して、chompメソッドを実行した結果が「--- chomp -----」と「---------------」に囲まれている部分です。

結果の通り、末尾の改行が削除されて、「Banana」から「Straw」までがつながって表示されています。しかし、文字列の途中にあった改行と、最後に2つあった改行のうちの1つは削除されていませんので、「berry」は別の行に表示されているわけです。

Peachが表示されない?

じつは、ほとんどの環境では、「--- original -----」の中に「Peach」が表示されていません。

この現象は、コンピュータがCRをどう解釈するかの問題です。

CRは、そもそも「左端に戻る」という意味で、改行ではありません。

そのため、多くの環境はこの意味を素直に実行しますので、「Peach」を表示したあと、カーソルが左端に戻って、そこから「Apple」が上書き表示されるため、「Peach」が表示されていないように見えるわけです。

以下のプログラムを動かしてみれば、確認できるでしょう。

cr = "123456789\r"
crlf = "000\r\n"
print(cr, crlf)

このプログラムを、「Peach」が表示されない環境で実行すると、以下のように表示されます。

000456789

cr「123456789」を表示したあとに、カーソルが左端に戻り、crlf「000」が「123」の上に表示されているのです。

以上のように、chompメソッドは文字列の末尾にあるすべての種類の改行を削除するメソッドです。

なお、末尾に改行文字がなければなにもしません

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

chompの他の種類

chompメソッドそのものの説明はここまでですが、chompにはあと2種類ありますので、紹介しておきます。

引数付きのchomp

じつは、本当のchompの構文は以下のようになっています。

Stringオブジェクト.chomp(引数 = "\n")

つまり、「chompメソッドは引数に渡された文字が末尾にあった場合、その文字を削除する」という動きをするメソッドなのです。

引数のデフォルト値に改行文字が設定されています。渡されるため、改行文字を削除するわけです。

そのため、もし引数に改行以外の文字が渡された場合は、末尾にあるその文字を削除します。

datas = "test>"
print(datas.chomp(">"))

(結果)

test

なお、引数に空文字列「""」を渡すことで、末尾の連続した改行も1度に削除できるのは、ちょっとしたTIPSと言えます。

datas = "test\n\n\n"
print(datas.chomp(""))

(結果)

test

破壊的メソッドchomp!

chompメソッドには、破壊的メソッドchomp!が準備されています。

これまで使ってきたchompメソッドは、末尾の改行を削除した文字列を戻り値として返すだけで、元の文字列には何の影響もありませんでした。しかし、破壊的メソッドchomp!は、元の文字列自身を変更してしまいます。

datas = "test>"
datas.chomp!(">")
print(datas)

(結果)

test

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

chompとchop

Stringクラスには、chompメソッドによく似たメソッドで「chopメソッド」というメソッドがあります。

名前もよく似ていますが、動作もよく似ており、chopメソッドは、末尾の文字を1文字削除するメソッドです。(\r\nが末尾にあった場合のみ、2文字削除します)

つまり、chopメソッドでもchompメソッドと同じように末尾の改行文字の削除を行うことができます。

しかし、chopメソッドはどんな文字であっても末尾の1文字を削除しますので、末尾に改行がない場合でも末尾の文字が削除されてしまいます。そのため、「改行を削除したい」のであれば、chompメソッドを使うべきでしょう。

datas = "Apple\n"
print("改行あり:#{datas.chomp} <-同じ?-> #{datas.chop}")
puts
datas = "Apple"
print("改行なし:#{datas.chomp} <-同じ?-> #{datas.chop}")

(結果)

改行あり:Apple <-同じ?-> Apple
改行なし:Apple <-同じ?-> Appl

時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
2018-01-26 13:03
今回の記事では、WebCampに1ヶ月間通い、未経験からエンジニアとして転職した星野さんにお話を伺いました。 <プロフィール> 星野 智洋 さん(25) 学生時代は日本大学芸術学部...

chompの使いどころ

chompメソッドは、文字列の末尾に改行があれば、その改行を削除するメソッドです。しかし、ただ改行を削除するだけですので、どういったシーンで使うのかが想像しにくいかもしれません。

ここでは、このメソッドを、どういったシーンで使うのが最適なのか、もっとも代表的な例を紹介しておきます。

ファイルから読み込んできたデータをつなげる

プログラムからテキストファイルを扱う場合、改行文字が邪魔になることがあります。

なぜなら、テキストファイルには、必ず行末に改行文字があるからです。

そのため、テキストファイルを読み込んで文字数を数える処理をなどでは、改行文字を削除しなければ正しく文字数を算出できません。

# 読み込んだテキストファイルのイメージ
testfile = ["line1 aaaa\n",
            "line2 bbbb\n",
            "line3 cccc\n",
            "line4 dddd\n",
            "line5 eeee\n"]

# 文字数を数える
file_data = ""
testfile.each do |l|
  file_data += l.chomp # 改行を削除しながら文字列をつなげる
end

# 結果表示
p(file_data.size)

(結果)

50

まとめ

chompメソッドを紹介しました。

chompメソッドは、数多くあるStringクラスのインスタンスメソッドの中では、機能も単純であまり使うことはないかもしれません。

しかし、単純な機能であるからこそ、最適な使いどころで使うとても強力な武器になるとも言えます。

確実に憶えておく必要はないかもしれませんが、存在だけでも憶えておき、いざというときに使えるようになっておきましょう。


・chompは文字列の末尾にある改行を削除する(改行文字でなければなにもしない)
・改行には、「\n」「\r」「\r\n」の3種類あるが、chompはすべてに対応している
・chompは引数に渡された文字が末尾にあった場合に削除するメソッド
・chompの引数に空文字("")を渡すと末尾にある連続した改行文字をすべて削除できる
・破壊的メソッドchomp!も存在する
・chopメソッドは末尾の1文字を削除する

WebCamp・WebCamp Proについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。WebCamp Proは3ヶ月間で未経験から即戦力エンジニアを育成するプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

8月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
7月受入枠は満員となっております。8月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

 

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Rubyの関連記事
  • 【Ruby入門説明書】ruby sliceについて解説
  • 【Ruby入門説明書】chompについて解説
  • 【Ruby入門説明書】selectについて解説
  • 【Ruby入門説明書】matchについて解説
  • 【Ruby入門説明書】リファレンス、sortについて解説
  • 【Ruby入門説明書】リファレンス、moduleについて解説

当サイトで人気のオススメ転職サービスTOP3

1位 マイナビエージェント×IT

おすすめポイント

・平日忙しい人も、土曜日開催の個別キャリア相談会に参加できる

・職種や仕事内容(要件定義、上流工程から携わる仕事など)の要望が細かくできる
・マイナビの規模を活かした豊富で幅広い求人数

マイナビエージェント×ITの登録はこちら

2位 レバテックキャリア

おすすめポイント

・求人登録数4,000件以上

・エンジニア未経験、経験者両方に対応

・有名企業の採用担当者インタビューがみれる

・一次面接NGからの内定実績もあるほど、内定率が高い

レバテックキャリアの登録はこちら

 3位 type転職エージェント

おすすめポイント

転職者の71%が年収アップ

・IT系企業、特にエンジニアに限らず営業職の求人も充実している

各職種専門の転職アドバイザーが援助

type転職エージェントの登録はこちら

おすすめの記事