Richten Sie eine Zuordnungstabelle ein:
map = {'☺' => ':)', '☹' => ':(' }
Erstellen Sie dann einen regulären Ausdruck:
re = Regexp.new(map.keys.map { |x| Regexp.escape(x) }.join('|'))
Und schließlich gsub
:
s = str.gsub(re, map)
Wenn Sie in 1.8 Land stecken, dann:
s = str.gsub(re) { |m| map[m] }
Sie benötigen das Regexp.escape
dort, falls etwas, das Sie ersetzen möchten, innerhalb eines regulären Ausdrucks eine besondere Bedeutung hat. Oder dank steenslag können Sie Folgendes verwenden:
re = Regexp.union(map.keys)
und das Angebot wird für Sie erledigt.