лучшая альтернатива в замене букв - PullRequest
2 голосов
/ 30 января 2010

Есть ли лучшая альтернатива этому?

name.gsub('è','e').gsub('à','a').gsub('ò','o').gsub('ì','i').gsub('ù','u')

спасибо

Ответы [ 6 ]

9 голосов
/ 30 января 2010

Использование tr .

Может быть, как string.tr('èàòìù', 'eaoiu').

1 голос
/ 30 января 2010

Если вам действительно нужно полное решение, попробуйте извлечь таблицы из модуля Unidecode Perl . После перевода этих таблиц в Ruby вы захотите перебрать каждый символ ввода, подставив значение таблицы для этого символа.

1 голос
/ 30 января 2010
substitutes = {'è'=>'e', 'à'=>'a', 'ò'=>'o', 'ì'=>'i', 'ù'=>'u'}
substitutes.each do |old, new| 
    name.gsub!(old, new)
end

Или вы можете использовать расширение String, такое как , чтобы сделать это за вас.

0 голосов
/ 30 января 2010

Если вариант JRuby, см. Ответ на мой вопрос:

Как обнаружить символы Юникода в строке Java?

Имеется в виду удаление акцентов с букв с помощью нормализатора. Вы можете получить доступ к этому классу из JRuby.

0 голосов
/ 30 января 2010

В случае, если вам интересны технические термины для того, что вы хотите сделать, это сворачивание регистра и, возможно, нормализация Unicode (а иногда и сопоставление).

Вот конфигурация сворачивания кейсов для ThinkingSphinx , чтобы дать вам представление о том, сколько символов вам нужно беспокоиться.

0 голосов
/ 30 января 2010

Делая дикий удар в темноте, но если вы пытаетесь удалить акцентированные символы, потому что вы используете устаревший формат кодирования текста, вы должны посмотреть на Iconv.

Вступительное замечание по теме: http://blog.grayproductions.net/articles/encoding_conversion_with_iconv

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...