お題
「正規表現は難しい!なんて難しいんだ!」という文字列を、gsubメソッドを使って「正規表現は簡単だ!なんて簡単なんだ!」という文字列に直せ。
引用:「たのしいRuby 第6版」P.364より
回答
str = "正規表現は難しい!なんて難しいんだ!" str.gsub(/正規表現/) do |m| p "#{m}は簡単だ!なんて簡単なんだ" end
説明
お題の意味がよくわからず、gsubメソッドにブロックを渡して処理をした。ただこれだとかなり簡単な問題になってしまう。
学び
gsubメソッドを続けるという方法もあった。
str = "正規表現は難しい!なんて難しいんだ!" str.gsub(/難しいんだ/, "簡単なんだ").gsub(/難しい/, "簡単だ") => "正規表現は簡単だ!なんて簡単なんだ!"
なにはともあれgsubメソッドにブロックを渡せることを知れてよかった。
ちなみにsubとgsubメソッドの違いこちら。
- sub:最初にマッチした文字列を置き換える
- gsub:マッチした文字列すべてを置き換える