はじめてのRuby!chopメソッドの使い方を解説!

こんにちは!エンジニア兼ライターのヤマシタです。

Rubyにはさまざまな文字列操作のメソッドが用意されています。

プログラミングをする上で、

「文字列の末尾の文字を取り除くにはどうすればいいの?」

などといった処理が必要な場合もあります。

そこでここでは、

【基礎】chopメソッドとは
【実践】chopメソッドの使い方
【実践】chopメソッドの用途
【実践】破壊的メソッドchop!メソッドの使い方
【発展】chopの関連メソッド

などにについて解説していきます!

文字列に末尾を削除する処理は、実際の開発の現場でもよく使われますので、使い方をよく覚えておきましょう!

目次

chopメソッドとは

chopメソッドは、文字列の末尾の文字をとりのぞいた文字列を取得したい場合に使用するメソッドです。

chopメソッドは以下のように記述します。

文字列.chop

末尾が改行コード「\n(LR)」「\r\n(CR+LF)」の場合は、改行コードが削除されます。

次項よりchopメソッドの使い方を詳しく見ていきましょう。

chopメソッドの使い方

chopメソッドの基本

以下のサンプルでは、chopメソッドを使用して文字列の末尾を取り除いています。

サンプルプログラム:

str1 = "samruai"
str2 = "engineer"
str3 = "blog"

puts str1.chop
puts str2.chop
puts str3.chop

実行結果:

samrua
enginee
blo

このように文字列の末尾が取り除かれました。

結局どのような用途で使うの?

chopメソッドは文字列の末尾の1文字を削除しますが、具体的にどのような用途で使うのでしょうか?

たとえば、先述したようにchopメソッドは改行文字を取り除くことができるため、ファイルなどを読み込んで末尾の改行コードを取り除きたい場合に使用します。

サンプルプログラム:改行コードを削除

str1 = "samruai\n"
str2 = "engineer\r\n"
str3 = "blog\r"

puts str1.chop
puts str2.chop

実行結果:

samruai
engineer
blog

このように改行コードが取り除かれます。

また、文字列末尾の不要なセパレータ(カンマ、スペース)などを削除したい場合にも使われます。

サンプルプログラム:セパレータを削除

str1 = "samruai,"
str2 = "engineer "
str3 = "blog:"

puts str1.chop
puts str2.chop
puts str3.chop

実行結果:

samruai
engineer
blog

このように不要なセパレータが削除されました!

chop!メソッドの使い方

chopメソッドは元の文字列に影響を与えませんが、「!」が付加されたchopメソッドを使用すると、元の文字列が変更されます。

このように元の値に影響を及ぼすメソッドのことをRubyでは破壊的メソッドと呼びます。

破壊的メソッドはメソッドに「!」が付加されています。

サンプルプログラム:chop!の使い方

str1 = "samruai,"
str2 = "engineer "
str3 = "blog:"

str1.chop!
str2.chop!
str3.chop!

puts str1
puts str2
puts str3

実行結果:

samruai
engineer
blog

このように破壊的メソッドchop!の場合は元の文字列オブジェクトが変更されていることがわかりますね!

  • 元の値を残して置きたい場合はchop
  • 元の値を変更したい場合はchop!

と覚えておきましょう。

関連メソッド

Rubyのメソッドにはchopメソッドと似たような処理として、chomp・strip・gsubなどがあります。

それぞれのメソッドの使い方については、以下の記事で詳しく解説しています!

まとめ

ここでは、文字列の末尾を削除するchopメソッドについて、

  • chopメソッドとは
  • chopメソッドの使い方
  • chopメソッドの用途
  • 破壊的メソッドchop!メソッドの使い方
  • chopの関連メソッド

などについて解説しました。

文字列の末尾を削除したいとき、chopメソッドは非常に便利ですので使い方についてはよく理解しておきましょう。

もしchopメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

システムエンジニアとして10年勤務→フリーランスへ。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

目次