У меня есть строка, которая была импортирована из CSV, таких как:Rails разбить строку с несколькими частями
14 авг 2009: 1, 15 августа 2009: 1, шестнадцатый сен 2015: 1 | style1, 17 сентября 2015: 1 | Стиль 1
Я хочу, чтобы добавить эти данные в мою базу данных определенным образом. Сначала я разделил его на ,
, чтобы получить каждую группу дат (в данном случае 4 даты).
Во-вторых, мне хотелось бы разделить каждую из этих групп дат на несколько сегментов. Первый с датой, второй с номером после двоеточия, а затем различной суммой больше для каждого из предметов, разделенных символом |
.
Есть ли достойный эффективный способ добиться этого в Ruby?
В поисках результата быть хэш следующим образом:
{ '14th Aug 2009' => 1, '15th Aug 2009' => 1, '16th Aug 2009' => 1, '16th Sep 2015' => { 1 => 'Style 1' }, '17th Sep 2015' => { 1 => 'Style 1' }
В принципе, если строка была так:
15 августа 2009: 1, 16 сентября 2015: 3 | Style1 | Стиль 1, 17 сентября 2015 : 1 | Стиль 1
я бы
{ '15th Aug 2009' => 1, '16th Sep 2015' => { '', 'Style 1', 'Style 1' }, '17th Sep 2015' => { 1 => 'Style 1' }
В принципе, текст, разделенный |
, должен быть присвоен номеру после двоеточия. Если число 3, и есть два набора текста после того, как он тогда один является пустой строкой, а два других будут говорить текст (например:. «Стиль 1»
Извините за звучание очень запутанным
Можете ли вы привести пример того, что вывод должен быть что вы пробовали до сих пор? –
Ваш формат выходного файла недействителен: '{'', 'Style 1', 'Style 1'}'. Вы хотите использовать вместо этого массив? Например: '['', 'Style 1' 'Style 1'] '? – infused
' st ring.split (",") .each_with_object ({}) {| line, hsh | k, * tokens = line.split (/: | \ | /); hsh [k] = tokens} 'должен делать трюк – bjhaid