2012-02-10 4 views
2

J'ai la chaîne (en fait c'est une date et une heure) comme ceci "20120207080000".ruby ​​on rails sous-chaîne récursive

Existe-t-il une option pour diviser la chaîne donnée en utilisant n'importe quelle technique de correspondance de modèle ou autre chose?

i.e. J'ai besoin de la sortie comme celui-ci

output = ["2012", "02", "07", "08", "00", "00"] 

est autrement possible de convertir la chaîne donnée en objet date/heure ?.

version rubis: 1.8.7

Répondre

8
"20120207080000".unpack('A4A2A2A2A2A2') #=> ["2012", "02", "07", "08", "00", "00"] 
+0

Merci @steenslag. très belle réponse. –

+0

+1 belle réponse .. –

4

obtenir un objet DateTime comme ceci:

require 'date' 
DateTime.strptime('20120207080000', '%Y%m%d%H%M%S') 

S'il vous plaît prendre soin que vous utilisez le bon ordre des éléments. Je ne faisais que deviner.

+0

Merci @iltempo. –

1

@steenslag réponse est vraiment une bonne réponse, mais vous pouvez également faire simplement en utilisant la manipulation de chaînes.

str = "20120207080000" 
output = [str[0..3], str[4..5], str[6..7], str[8..9], str[10..11], str[12..13]] 

Résultat:

["2012", "02", "07", "08", "00", "00"] 
+0

Il y a aussi '[str [0, 4]] + str [4 ..- 1] .scan (/../)' si vous aimez les conflits de chaînes. –