Ruby Tips!

RubyのTipsを紹介します

文字列を置換する

文字列を置換するにはString#subまたはString#gsubを使う。String#subはマッチした最初の1つだけを、String#gsubはマッチしたすべての文字列を置換した新しい文字列を返す。

これらのメソッドの基本的な使い方は第1引数に置換対象の文字列か正規表現を指定し、第2引数に置換後の文字列を指定する方法だ。

p "foo bar buz".sub('b', 'p') #=> "foo par buz"
p "foo bar buz".gsub(/b/, 'p') #=> "foo par puz"

第2引数を指定する代わりに、ブロックを指定することもできる。この場合はブロックの評価結果で置換対象の文字列が置換される。より複雑な置換を行うことが可能だ。

p "foo bar buz".gsub(/b\w*/){|m| m.upcase } #=> "foo BAR BUZ"

なお、これらのメソッドには、新しい文字列を返すのではなく、文字列を破壊的に置換するString#sub!String#gsub!もある。