文字列の置換 - Rubyプログラミング(9)

プログラミング、サーバー、ネットワーク、IT用語、ハマったときのトラブルシューティングなど様々なIT関連の話題をひたすら書いていく技術ブログです。

2017年1月24日火曜日

文字列の置換 - Rubyプログラミング(9)


この記事では実際のアプリケーションでよく使われる実用的な文字列用のメソッドを見ていきましょう。

str = "The quick brown fox jumped over the quick dog"

この文章に特に意味はありませんが、quickが2回出現しています。もしこのquickをslowに変換したい場合、subメソッド(substitution)が使えます。



このプログラムでは、文章を代入したstrに対してsubメソッドを呼び出しています。そして2つの引数を与えています。1つ目の引数(この場合はquick)は、プログラムが発見できる文字です。2つ目の引数(この場合はslow)は1つ目の引数の替わりとなるデータです。結果は下記のようになります。


結果から分かるように、subメソッドは最初に検索にかかった単語のみ(この場合はThe quick〜のquick)、第2引数のslowと変換します。検索にヒットする単語全てを変換したい場合、gsubメソッド(global substitution)を使用します。コードは下記のようになります。



結果は下記のようになります。


!を付けるとどうなる?

ここで「!」が付いているgsub!と付いていないgsubの違いを確認しましょう。

上記のプログラムでgsubメソッドを実行した後でも、変数strは代入した値「The quick brown fox jumped over the quick dog」になっています。これはgsubメソッドが変数自体には変更を加えないからです。一方gsub!メソッドを使用して、変数strを表示してみると、変数strは「The slow brown fox jumped over the slow dog」となっています。このようなもとの値を変えてしまうメソッドを破壊的メソッドと呼びます。

gsub!は特定の状況下では使用することがありますが、レガシーシステムなどで、値の調査、確認することが難しく、はっきりと分からないときは、基本的には元データの変更(破壊的メソッド)はなるべく避けるべきでしょう。

◯Hello Worldの文字列を表示する - Rubyプログラミング(10)はこちら
◯「Rubyプログラミング」シリーズの一覧はこちら



最近の投稿