Je voudrais tourner une chaîne avec des heures d'ouverture comme ceci:Chaîne à matrice et Hash avec Regexp
"Monday-Friday>10:00-18:00;Saturday>12:00-17:00;Sunday>12:00-15:00"
Dans ceci:
[ {:period => "Monday-Friday", :hours => "10:00-18:00"}, {:period => "Saturday", :hours => "12:00-17:00"}, {:period => "Sunday", :hours => "12:00-15:00"} ]
Je suis en train avec le String.scan() mais ne peut pas comprendre l'expression rationnelle.
Aussi, si vous avez des suggestions sur la façon de le faire inverse de la meilleure façon (à savoir lors de l'obtention des heures d'ouverture d'une forme.)
Mise à jour - Merci à vous tous trouvé des solutions parfaites! En ce moment, j'utilise (merci kejadlen):
str.scan(/([\w-]+)>([\d:-]+)-([\d:]+)/).map { |(p,o,c)| {:period => p, :opens => o, :closes => c} }
Mais que diriez-vous renverser =) Donc, étant donné:
[ {: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"} ]
Je veux fusionner à:
"Monday-Friday>10:00-18:00;Saturday>12:00-17:00;Sunday>12:00-15:00"
Vous devriez vraiment ouvrir une autre question pour le renverser, mais ... 'aire. map {| i | "% s>% s-% s"% i [: période], je [: ouvre], je [: ferme]} .join (";") ' – kejadlen