представить массив как этотCleanest код рубин, чтобы разбить строку с определенными правилами
[
"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
Чтобы узнать, как использовать 'split()' только в первом случае, см. Мой ответ или, скорее, см. [Документация для 'split'] (http://ruby-doc.org/core/classes/String.html#M001165) и посмотрите на параметр' limit'. – Phrogz
bah спасибо, что предел param ускользнул от меня до сих пор ... –