Existe alguma função pronta que converte Strings de caixa de camelo em string separada por sublinhado?
Eu quero algo como isto:
"CamelCaseString".to_underscore
para retornar "camel_case_string".
...
ruby-on-rails
ruby
string
formatting
case-conversion
Daniel Cukier
fonte
fonte
Respostas:
O ActiveSupport do Rails adiciona sublinhado à String usando o seguinte:
Então você pode fazer coisas divertidas:
fonte
tr("-","_")
paratr("- ","_")
(espaço adicionado ao primeiro parâmetro), isso também transformará espaços em sublinhados. Além disso, acho que você nem precisa incluirself.
, ou pelo menos funciona para mim no Ruby 1.9.3.require 'active_support/core_ext/string'
Você pode usar
Ou apenas
Ambas as opções irão render
"camel_cased_name"
. Você pode conferir mais detalhes aqui .fonte
Implementação Ruby de uma linha:
assim
"SomeCamelCase".to_underscore # =>"some_camel_case"
fonte
/([^A-Z])([A-Z]+)/
, em vez disso, manipular"ALLCAPS"
-> em"allcaps"
vez de"a_ll_ca_ps"
Existe um método embutido do Rails chamado 'underscore' que você pode usar para esse fim
O método 'sublinhado' pode normalmente ser considerado como inverso de 'camelize'
fonte
Aqui está como o Rails faz isso :
fonte
Receptor convertido em caso de cobra: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
Esta é a biblioteca de suporte do DataMapper e Merb. ( http://rubygems.org/gems/extlib )
fonte
Confira o caso de cobras do Ruby Facets
Os seguintes casos são tratados, como mostrado abaixo:
De: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
fonte
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
Oneliner curto para CamelCases quando você tem espaços também incluídos (não funciona corretamente se você tiver uma palavra entre letras pequenas e iniciais):
fonte
underscore
não faz parte do ruby #Caso alguém procure um caso em que ele precise aplicar sublinhado a string com espaços e desejar convertê-los em sublinhados, você pode usar algo como isto
Ou apenas use .parameterize ('_'), mas lembre-se de que este está obsoleto
fonte
Eu gostaria deste:
Remendo de macaco da
String
classe. Há turmas que começam com duas ou mais letras em maiúsculas.fonte
"\1_\2"
para o'\1_\2'
contrário, em"came\u0001_\u0002ase"
vez"camel_case"
de usar o Ruby 2.5 ... talvez outros também.