動かざることバグの如し

近づきたいよ 君の理想に

Rubyで複数文字列置換を一発で終わらせる

環境

  • Ruby3

やりたいこと

gsub何回も重ねるのは非効率なので一括置換したい

コード

gsubdict = {
  "ストロベリー" => "strawberry",
  "パイナップル" => "pineapple"
}

original_text = "ストロベリーパフェとパイナップルジュース"
# gsub と Regexp.union を使用して文字列を置換
result = original_text.gsub(Regexp.union(gsubdict.keys), gsubdict)

puts result

注意点

渡すハッシュのキーは文字列でないといけない。シンボルは不可、つまり

gsubdict = {
  "ストロベリー": "strawberry",
  "パイナップル": "pineapple"
}

は動作しない。