Я бы хотел повернуть строку с часами работы, как это:
"Monday-Friday>10:00-18:00;Saturday>12:00-17:00;Sunday>12:00-15:00"
В это:
[ {:period => "Monday-Friday", :hours => "10:00-18:00"}, {:period => "Saturday", :hours => "12:00-17:00"}, {:period => "Sunday", :hours => "12:00-15:00"} ]
Я пытаюсь сделать это с помощью метода String.scan (), но не могу определить регулярное выражение.
Также, если у вас есть какие-либо предложения о том, как сделать это в обратном порядке наилучшим образом (т.е. при получении часов работы из формы).
Обновление - Спасибо всем, нашли идеальные решения! Прямо сейчас я использую (спасибо kejadlen):
str.scan(/([\w-]+)>([\d:-]+)-([\d:]+)/).map { |(p,o,c)| {:period => p, :opens => o, :closes => c} }
Но теперь, как насчет того, чтобы поменять его =) Итак, дано:
[ {:opens=>"10:00", :closes=>"18:00", :period=>"Monday-Friday"},
{:opens=>"12:00", :closes=>"17:00", :period=>"Saturday"},
{:opens=>"12:00", :closes=>"15:00", :period=>"Sunday"} ]
Я хочу объединить это с:
"Monday-Friday>10:00-18:00;Saturday>12:00-17:00;Sunday>12:00-15:00"