Existe-t-il une fonction prête à convertir les chaînes de cas en chameaux en chaînes séparées par des soulignés?
Je veux quelque chose comme ça:
"CamelCaseString".to_underscore
pour retourner "camel_case_string".
...
Existe-t-il une fonction prête à convertir les chaînes de cas en chameaux en chaînes séparées par des soulignés?
Je veux quelque chose comme ça:
"CamelCaseString".to_underscore
pour retourner "camel_case_string".
...
ActiveSupport de Rails ajoute un trait de soulignement à la chaîne en utilisant les éléments suivants:
class String
def underscore
self.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
end
Ensuite, vous pouvez faire des choses amusantes:
"CamelCase".underscore
=> "camel_case"
Implémentation Ruby One-Liner:
class String
# ruby mutation methods have the expectation to return self if a mutation occurred, nil otherwise. (see http://www.ruby-doc.org/core-1.9.3/String.html#method-i-gsub-21)
def to_underscore!
gsub!(/(.)([A-Z])/,'\1_\2')
downcase!
end
def to_underscore
dup.tap { |s| s.to_underscore! }
end
end
Donc "SomeCamelCase".to_underscore # =>"some_camel_case"
Voici comment Rails le fait :
def underscore(camel_cased_word)
camel_cased_word.to_s.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
Récepteur converti en cas de serpent : http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
Il s’agit de la bibliothèque de Support pour DataMapper et Merb. (http://rubygems.org/gems/extlib)
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.