представьте массив, подобный этому
[
"A definition 1: this is the definition text",
"A definition 2: this is some other definition text",
"B definition 3: this could be: the definition text"
]
Я хочу получить следующий хеш
hash = {
:A => ["A definition 1", "this is the definition text", "A definition 2", "this is some other definition text"],
:B => ["B definition 3", "this could be: the definition text"]
}
Я создаю глоссарий с хэшем каждой буквы алфавита с массивами определений.
Я довольно новичок в Ruby, поэтому то, что у меня есть, выглядит действительно не элегантно, и я бьюсь над регулярным выражением строки в двоеточии, чтобы 3-я строка разделялась только в первом случае.
Спасибо!
Редактировать
Вот что у меня так далеко
def self.build(lines)
alphabet = Hash.new()
lines.each do |line|
strings = line.split(/:/)
letter = strings[0][0,1].upcase
alphabet[letter] = Array.new if alphabet[letter].nil?
alphabet[letter] << strings[0]
alphabet[letter] << strings[1..(strings.size-1)].join.strip
end
alphabet
end