Rubyのreplaceメソッドの使い方【初心者向け】
初心者向けにRubyのreplaceメソッドの使い方について解説しています。replaceメソッドを使うことで文字列の内容を置き換えることができます。gsub!メソッドとの違い、実際の例について見ていきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyのreplaceメソッドの使い方について解説します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
replaceメソッドの使い方について詳しく説明していくね!
お願いします!
replaceメソッドとは
簡単にreplaceメソッドを説明すると、オブジェクトの値を変更してしまうメソッドということになります。いわゆる、破壊的メソッドと呼ばれるものです。ここら辺はgsub!メソッドとよく似ています。
違いは何かと言うと、gsub!メソッドは例えばレシーバーの文字列の中の部分的に一致する文字列を、新しい文字列へと変更することができるために、正規表現を使っての文字列の変更には最適なメソッドと言えます。
これに対してreplaceメソッドは、レシーバーの値を新しい値に置き換えてしまうのはgsub!メソッドと同じです。しかし、gsub!メソッドのように部分的に一致する文字列を変更するということはできません。
例えば、レシーバーの文字列全部を新しい文字列全部に変更することとなります。
従って、正規表現などで部分的に一致する文字列のみを変更することができるgsub!メソッドの方が汎用性は高いです。しかしオブジェクトの値そのものが変更になるという点では、gsub!メソッドもreplaceメソッドも同じということになるでしょう。
破壊的メソッドはオブジェクトの値自体を変更してしまうので、使用はなるべく避けた方がよいと思われます。
replaceメソッドの使い方
gsub!メソッドは上記でも書いたように、文字列の場合、部分的に一致する文字列を新しい文字列へと変更できますが、replaceメソッドはそのような機能は有しておりません。
従って、文字列の場合も変更しようとする文字列全部を書くということとなります。
ここまでの説明ではなかなかわかりにくとも思いますので、実際にコードを書いて説明してみます。
実際に書いてみよう
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では、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。