Rubyのreplaceメソッドの使い方【初心者向け】

初心者向けにRubyのreplaceメソッドの使い方について解説しています。replaceメソッドを使うことで文字列の内容を置き換えることができます。gsub!メソッドとの違い、実際の例について見ていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのreplaceメソッドの使い方について解説します。

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

replaceメソッドの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

replaceメソッドとは

簡単にreplaceメソッドを説明すると、オブジェクトの値を変更してしまうメソッドということになります。いわゆる、破壊的メソッドと呼ばれるものです。ここら辺はgsub!メソッドとよく似ています。

 

違いは何かと言うと、gsub!メソッドは例えばレシーバーの文字列の中の部分的に一致する文字列を、新しい文字列へと変更することができるために、正規表現を使っての文字列の変更には最適なメソッドと言えます。

 

これに対してreplaceメソッドは、レシーバーの値を新しい値に置き換えてしまうのはgsub!メソッドと同じです。しかし、gsub!メソッドのように部分的に一致する文字列を変更するということはできません。

例えば、レシーバーの文字列全部を新しい文字列全部に変更することとなります。

 

従って、正規表現などで部分的に一致する文字列のみを変更することができるgsub!メソッドの方が汎用性は高いです。しかしオブジェクトの値そのものが変更になるという点では、gsub!メソッドもreplaceメソッドも同じということになるでしょう。

 

破壊的メソッドはオブジェクトの値自体を変更してしまうので、使用はなるべく避けた方がよいと思われます。

 

replaceメソッドの使い方

gsub!メソッドは上記でも書いたように、文字列の場合、部分的に一致する文字列を新しい文字列へと変更できますが、replaceメソッドはそのような機能は有しておりません。

従って、文字列の場合も変更しようとする文字列全部を書くということとなります。

ここまでの説明ではなかなかわかりにくとも思いますので、実際にコードを書いて説明してみます。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

str = "aaabbb"
str = str.gsub!("a","c")

puts str   #=> cccbbb

このようにgsub!メソッドは”a”という部分的に一致する文字列を”c”に置き換えています。

ここでは”aaa”と書かずに、”a”だけでOKです。

 

replaceメソッドを使うと

str = "aaabbb"
str = str.replace("c")

puts str    # => c

と”aaabbb”が”c”だけとなりました。

 

gsub!メソッドと同じような結果になるためには

str = "aaabbb"
str = str.replace("cccbbb")

puts str   #=> cccbbb

と置き変えようとする文字列を全部書く必要があります。

 

さて、最後に破壊的メソッドがオブジェクトの値そのものを変えてしまうという例を上げてみます。

strA = "あいうえお"
strB = strA
strA = strA.replace("かきくけこ")

puts strA # => かきくけこ

puts strB # => かきくけこ

以上のようにstrAのオブジェクトそのものの値が変更されてしまったために(“かきくけこ”へ変更)、strBにstrAから代入された値も変更されていますね。

strBも”かきくけこ”へ変更されちゃっていますね。

破壊的メソッドは使い方によってとても危険となりますので、注意しながら使いましょう!!

 

筆者プロフィール

町田 耕

学生時代は会計学専攻。塾講師勤務を経て、企業のCFOとして会社経営に携わる。

会社経営から一線を退いた後、インフラエンジニアの妻の勧めでプログラミングを

独学で始め、プログラミングセミナーなど転々としながら、開発案件に携わるようになる。

現在、フリーランスとして活動しながらテックアカデミーのメンターも勤めている。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。