Ваша проблема может быть решена с помощью регулярного выражения.Это возможное решение итерирует по entries
для получения массива хэшей:
dictionary = entries.map do |entry|
entry.scan(/(.*) \[(.*)\] \/(.*)\//).map do |(headword, kana, definition)|
{ headword: headword, kana: kana, definition: definition }
end
end
Это довольно просто: отсканируйте каждую запись на три раздела в стандартном формате и сопоставьте эти совпадения в хэши, извлекая переменныев массиве на новые имена.Если существует более простой или более ясный способ решения проблемы, чем этот, то вам следует использовать его, но в противном случае я рекомендую что-то подобное.
Примечание. Из-за использования в ваших данных сторонней кодировки это можетне работает, если вы не измените кодировку механизма регулярных выражений.