トマトの中身(ruby
2008.09.19
カテゴリ:初心者向け

文字列の一部を置換したい

RSS

初めましてこんばんわ、トマトです。

まだまだひよっこな私ですが、日々Ruby on Railsに悪戦苦闘しております。


さて、今回は何かとよく使われる、

文字列の一部を置換するメソッドをご紹介したいと思います。


○gsubメソッド

このメソッドは引数を2つとります。

第1引数では正規表現を使って置換したい部分のパターンを指定し、

第2引数では第1引数のパターンでマッチした部分と入れ替える文字列を指定します。


 文字列.gsub(/マッチさせたいパターン/,'置換したい文字列')


。。。とまぁ、言葉で表すとわかりづらいので

実際に使ってみましょう。

str = "red$blue$$green$$$yellow$$$$pink"
p str.gsub(/\$+/,' ')

# 出力結果
# "red blue green yellow pink"


このように置換することができるんですね。

実用的な使い方の例としては、場合によって"http"と"https"とで出し分ける際に


img = "http://tomato.com/product/img/tomato.jpg"
my_img = ""
if flg==1
   my_img = img.gsub(/\^http/,'https')
else
   my_img = img
end


上のように記述をすれば、簡単です。


○subメソッドとの違い

gsubメソッドとすごくよく似ているメソッドがsubメソッドです。

名前がそっくりならば、機能もやっぱりそっくりです。

ためしに使い比べてみましょう。


img = "http://tomato.com/product/img/tomato.jpg"

p img.gsub(/tomato/,'banana')
# gsub出力結果
# "http://banana.com/product/img/banana.jpg"

p img.sub(/tomato/,'banana')
# sub出力結果
# "http://banana.com/product/img/tomato.jpg"


よく見てみるとgsubメソッドでは、"tomato" にマッチした部分

すべてを置換しているのに対して、

subメソッドでは最初の"tomato"にマッチした部分のみ

置換しているのがわかります。


要するに

○gsubメソッド=すべて置換する

○subメソッド=先頭だけ置換する

ということなのです。


○gsub!、sub!メソッド

gsubとsubメソッドに"!"のついたこのメソッド。

これもちょっと使ってみましょう。


img = "http://tomato.com/product/img/tomato.jpg"
img.gsub(/tomato/,'banana')
p img
# gsub出力結果
# "http://tomato.com/product/img/tomato.jpg"

img.gsub!(/tomato/,'banana')
p img
# gsub!出力結果
# "http://banana.com/product/img/banana.jpg"


subメソッドやgsubメソッドでは置換後の文字列を

その都度生成して返しているのに対して、

sub!メソッドやgsub!メソッドを使うと文字列自体を変更してしまうので、

使用する際には注意が必要です。



やけに長くなりましたが、以上文字列置換メソッドの紹介でした。

また次回お会いしましょう。

コメント (0)  |トラックバック (0)

ブックマークに追加する

トラックバック URL
この記事にコメントをする
ニックネーム:
メールアドレス:
URL:


プロフィール

トマト
トマト
23 歳
こんにちは、新人のトマトです。

まだまだ未熟者ですが、
ruby on railsで開発をしたりしています。
たまにJavaScriptとも格闘してたりしています。

勉強不足な自分ですが、よろしくお願いします。

最新記事

アーカイブ

アクセスランキング

Topics

2008/08/14
ZD Net Builder」の連載記事です。第七回は 「Rubyでどう書く?:RubyCocoa+Core Animationでお手軽アニメーション」が掲載されました。
2008/08/06
ZD Net Builder」の連載記事です。第六回は 「Rubyでどう書く?特別編:Matzからのお題」が掲載されました。
KBMJのWebソリューション
Ruby on Rails セミナー
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ