Cela fonctionne pour toutes les chaînes contenant des espaces blancs
str.downcase.tr!(" ", "_")
mais les chaînes qui n'ont pas d'espaces sont simplement supprimées
Donc "New School" deviendrait "new_school" mais "color" serait "", rien !
Cela fonctionne pour toutes les chaînes contenant des espaces blancs
str.downcase.tr!(" ", "_")
mais les chaînes qui n'ont pas d'espaces sont simplement supprimées
Donc "New School" deviendrait "new_school" mais "color" serait "", rien !
avec espace
str = "New School" str.parameterize.underscore => "new_school"
sans espace
str = "school" str.parameterize.underscore => "school"
Éditer :- nous pouvons également passer '_' comme paramètre à paramétrer.
avec espace
str = "New School" str.parameterize('_') => "new_school"
sans espace
str = "school" str.parameterize('_') => "school"
EDIT :
Pour les rails 5 et supérieurs, utilisez
str.parameterize(separator: '_')
Si vous souhaitez obtenir une chaîne dans snake case , la solution proposée ne fonctionne pas tout à fait, car vous pouvez obtenir des traits de soulignement concaténés et des traits de soulignement de début/de fin.
Par exemple
1.9.3-p0 :010 > str= " John Smith Beer "
=> " John Smith Beer "
1.9.3-p0 :011 > str.downcase.tr(" ", "_")
=> "__john___smith_beer_"
Cette solution ci-dessous fonctionnerait mieux:
1.9.3-p0 :010 > str= " John Smith Beer "
=> " John Smith Beer "
1.9.3-p0 :012 > str.squish.downcase.tr(" ","_")
=> "john_smith_beer"
squish est une méthode String fournie par Rails
Vieille question, mais...
Pour tous les espaces, vous voulez probablement quelque chose comme ceci :
"hey\t there world".gsub(/\s+/, '_') # hey_there_world
Cela obtient des tabulations et de nouvelles lignes ainsi que des espaces et remplace par un seul _
.
L'expression régulière peut être modifiée pour répondre à vos besoins. Par exemple:
"hey\t there world".gsub(/\s/, '_') # hey__there___world
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.