Posted at

rubyの置換を一回で全部したかった

More than 1 year has passed since last update.

rubyのgsubで検索ワードの該当した文字を強調表現にしたかったのですが、その時につまづいたのでメモ。

検索ワードが「a b c」だったときに

bluebird という要素に対して

該当する文字を強調したかった。

んでコード

searchKeywords = {"a","b","c"}

elementKeyword = "bluebird"

searchKeywords.each{|keyword|

elementKeyword.gsub!(/keyword/,"b" + keyword + "/b")

}

puts elementKeyword

としたのですが上手いこと変換してくれなくて

bタグが漏れてる...。

理由は一度"a"で変換した時に

bタグが追加されてしまって

それがまた変換してしまうのが原因でした。

なので一度のgsubで全て置換したいと

思いました。

まずgsubは

第一引数でパターンを

第二引数で置換文字列を送れるのですが

リファレンスをよく見ると

この第一引数にパターンの配列を

この第二引数に置換文字列のハッシュを渡す事が出来るらしいので

これを実現しようと思いました。