文字列を置換する
文字列を置換するには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!
もある。