2016-03-05 3 views
1

Я начинаю работать над простой программой Ruby для создания списков слов из текстовых файлов. Испанский позволяет словам переносить метки напряжений на заглавные буквы (например, «Ábaco»), но я хочу, чтобы все слова в моем списке были опущены. Прямо сейчас, если я попробую "Á".downcase, консоль вернет «Á».upcase and downcase для символов с акцентом

Есть ли способ использовать шкаф & в рубине с акцентированными символами на испанском языке (áéíóúñ)?

Это то, что моя программа в настоящее время выглядит следующим образом:

f = File.open(".../cat.txt") 
words = f.read.split.map(&:downcase) 
f.close 
words = words.map {|item| item.gsub(/[,.?!-"'"]/, '')} 
words = words.uniq.sort 

File.open(".../catwords.txt", "w+") do |f| 
    words.each { |element| f.puts(element) } 
end 

ответ

1

Посмотрите на этот пример кода

our_string.tr('Á', 'á') 

Согласно документации:

(от рубинового сайта) ------------------------------------------------- ----------------------------- str.tr (from_str, to_str) => new_str


Возвращает копию ул с символами в from_str заменены на соответствующих символов в to_str. Если to_str короче from_str, он дополняется его последним символом, чтобы поддерживать соответствие .

"hello".tr('el', 'ip') #=> "hippo"

`` `

1

Вам потребуется библиотека, которая понимает язык конкретных правил вещи, как упорядочение и преобразование. https://github.com/jchris/icu4r, вероятно, является основным, но вы найдете похожие материалы, если найдете поиск по (проект стандартов для такого рода вещей).

Смежные вопросы