Just do IT

思うは招く

Ruby基礎問題100本ノック#20 gsubメソッドを使う

お題

正規表現は難しい!なんて難しいんだ!」という文字列を、gsubメソッドを使って「正規表現は簡単だ!なんて簡単なんだ!」という文字列に直せ。

引用:「たのしいRuby 第6版」P.364より

回答

str = "正規表現は難しい!なんて難しいんだ!"
str.gsub(/正規表現/) do |m|
  p  "#{m}は簡単だ!なんて簡単なんだ"
end

説明

お題の意味がよくわからず、gsubメソッドにブロックを渡して処理をした。ただこれだとかなり簡単な問題になってしまう。

学び

gsubメソッドを続けるという方法もあった。

str = "正規表現は難しい!なんて難しいんだ!"
str.gsub(/難しいんだ/, "簡単なんだ").gsub(/難しい/, "簡単だ")
=> "正規表現は簡単だ!なんて簡単なんだ!"

なにはともあれgsubメソッドにブロックを渡せることを知れてよかった。

ちなみにsubとgsubメソッドの違いこちら。

  • sub:最初にマッチした文字列を置き換える
  • gsub:マッチした文字列すべてを置き換える