Удобный способ использования регулярного выражения и gsub в Ruby.
В случаях, когда очень нужно использовать gsub для замены нескольких значений в строке - можно воспользоваться Regexp.union для создания регулярного выражения. После создания регулярки мы будем применять ее в связке с gsub.
Например у нас есть строка, в которой вместо пробелов %20:
Например у нас есть строка, в которой вместо пробелов %20:
str = "Cats%20Are%20Here"
Поменяем в этой строке кошек на собак, а также "%20" заменим на пробел. Для этого сделаем хэшик ключ/значение, где ключ - исходное состояние.
what_to_change = {'Cats' => 'Dogs', '%20' => ' '}
Далее создадим регулярку при помощи Regexp.union:
re = Regexp.union(what_to_change.keys) => /Cats|%20
И наконец, магия. Используем наше регулярное выражение и хэшик с нужными значениями:
str.gsub(re, what_to_change) => "Dogs Are Here"
В итоге мы почистили строку от ненужных символов и поменяли кошек на собак для (потому что можем) наглядности.