2011-07-10 2 views
2

J'ai une chaîne que je suis division, comme suit:Conversion chaîne vide à zéro par split()

foo, bar, baz, etc = str.split(',') 

Si, par exemple, str est égal à « un, deux ,, quatre ", alors baz finit par égaler" "(une chaîne vide). Existe-t-il un moyen facile de parcourir ces paramètres pour les convertir en nil s'il s'agit d'une chaîne vide? Ou suis-je coincé en train de faire ce qui suit?

foo = nil if foo.blank? 
bar = nil if bar.blank? 
baz = nil if baz.blank? 
etc = nil if etc.blank? 
+2

pourquoi avez-vous besoin être nul? –

+1

Parce que chaîne nulle et vide sont deux valeurs différentes. –

Répondre

6

Si vous faites cela dans des rails, vous pouvez utiliser la méthode de présence # Objet:

foo, bar, baz, etc = str.split(',').map(&:presence) 
5

Je peux vous suggérer cette solution:

foo, bar, baz, etc = str.split(',').map{|ss| ss.blank? ? nil : ss}