У меня есть массив, который выглядит следующим образом:Последовательная разобрать массив хэш в Ruby,
array = [
"timestamp 1",
"data 1",
"data 2",
"data 3",
"timestamp 2",
"data "1",
"timestamp 3",
".."
]
etc
Я хочу проходным мой массив, и превратить его в структуру хеш данных, который выглядит как:
hash = {
"timestamp 1" => [ "data 1", " data 2", "data 3" ],
"timestamp 2" => [ "data 1" ],
}
Я не могу найти хороший «рубиновый» способ сделать это. Я перебираю массив, и я просто не могу понять, как отслеживать, где я нахожусь, и назначать хэш по мере необходимости.
# Let's comb through the array, and map the time value to the subsequent lines beneath
array.each do |e|
if timestamp?(e)
hash["#{e}"] == nil
else
# last time stamp here => e
end
EDIT: Вот временная метка? Метод
def timestamp?(string)
begin
return true if string =~ /[a-zA-z][a-z][a-z]\s[a-zA-z][a-z][a-z]\s\d\d\s\d\d:\d\d:\d\d\s\d\d\d\d/
false
rescue => msg
puts "Error in timestamp? => #{msg}"
exit
end
end
Что '' метка времени делать? – sawa
Просто функция, регулярное выражение которой определяет, является ли она допустимой меткой времени. Я обновляю сообщение с помощью функции. – awojo
Ваш 'array' не является допустимым объектом Ruby. Проверьте седьмую строку. – sawa