Замена специальных символов Ruby


Я хочу заменить все эти символы: 'àáäâãèéëẽêìíïîĩòóöôõùúüûũñç' на 'aaaaaeeeeeiiiiiooooouuuuunc'.

Есть ли эффективный способ сделать это в Ruby? Я думал о цикле каждого персонажа, но это не эффективно.

Спасибо.

2 3

2 ответа:

Я бы использовал tr что быстрее, чем регулярное выражение при замене отдельных символов:

string = 'hàllò wörld'
string.tr('àáäâãèéëẽêìíïîĩòóöôõùúüûũñç', 'aaaaaeeeeeiiiiiooooouuuuunc')
#=> '"hallo world"'

Обратите внимание: ответ @spickermann лучше и должен считаться правильным.

from = 'àáäâãèéëẽêìíïîĩòóöôõùúüûũñç'
to = 'aaaaaeeeeeiiiiiooooouuuuunc'

input.gsub /[#{from}]/, from.split('').zip(to.split('')).to_h