rails で文字列置換を行う際に対応表で置換する方法を備忘録として残しておく

方法

gsub メソッドに対して、第1引数に正規表現、第2引数に Hash を渡すことで実現する

環境

  • ruby: 3.0.4
  • rails: 6.1.6.1

実際のコード

# 変換用の対応表
convert_map = {
  'a' => 'A',
  'b' => 'B',
  'd' => 'D'
}
#=> {"a"=>"A", "b"=>"B", "d"=>"D"}

# 以下と同義
# "adcacbd".gsub(/a|b|d/, { 'a' => 'A', 'b' => 'B', 'd' => 'D' })
"adcacbd".gsub(Regexp.new("#{convert_map.keys.join('|')}"), convert_map)
#=> "ADcAcBD"