🙆‍♀️

String#gsub に Hash を渡す

に公開

知らなかったので覚書。
String#gsub はレシーバの文字列にマッチした文字を別の文字に置き換えるためのメソッドです。
次のようにマッチした文字列を別の文字に置き換えることができます。

pp "abcdefg".gsub(/[acf]/, "-")
# => "-b-de-g"

このときに『マッチした文字列』によって『特定の文字に置き換えたい場合』に次のように Hash を渡すことで実現することができます。


# マッチした文字を mapに応じて置き換える
# map にマッチした文字がない場合は空文字列になる
map = { "a" => "AAA", "f" => "FFF" }
pp "abcdefg".gsub(/[acf]/, map)
# => "AAAbdeFFFg"


# | でも利用できる
map2 = { "homu" => "ほむほむ", "mami" => "まみまみ" }
pp "homumamimadomamihomu".gsub(/homu|mami/, map2)
# => "ほむほむまみまみmadoまみまみほむほむ"

普通に便利でそうですねー。

関連

GitHubで編集を提案

Discussion