2010-10-23 6 views
0
filename = filename.gsub("_"," ").nil? ? filename.gsub("_"," ") : filename 

Répondre

5
filename = filename.gsub("_", " ") 

Ou s'il est autorisé à muter la chaîne:

filename.gsub!("_", " ") 

Vérifier si gsub renvoie nil est complètement inutile - retourne gsub jamais nil. gsub! renvoie nil si aucune modification n'a été effectuée, mais si vous utilisez gsub!, la valeur de retour ne vous intéresse généralement pas.

Notez également que le code que vous avez donné retourne toujours filename inchangé parce que vous avez mélangé le then - et la else -partie de votre ?:.

+0

Ruby Documentation dit: Réalise les substitutions de chaîne # gsub en place, str retour, ou nul si aucune substitution ont été effectuées – auralbee

+0

@auralbee : Vous mélangez 'gsub!' Et 'gsub'. Vous avez cité la documentation de 'gsub!', Mais vous avez utilisé 'gsub' dans votre code. 'gsub' ne retourne jamais' nil', 'gsub!' – sepp2k

+0

Vous avez raison! J'étais un peu confus! Merci – auralbee

0

essentiellement, juste

filename.gsub!("_", " ") 

Ou bien,

filename = filename.split("_").join(" ")