¿Hay alguna función lista que convierta las cadenas de mayúsculas y minúsculas en cadenas separadas por subrayado?
Quiero algo como esto:
"CamelCaseString".to_underscore
para devolver "camel_case_string".
...
ruby-on-rails
ruby
string
formatting
case-conversion
Daniel Cukier
fuente
fuente
Respuestas:
ActiveSupport de Rails agrega guión bajo a la cadena usando lo siguiente:
Entonces puedes hacer cosas divertidas:
fuente
tr("-","_")
atr("- ","_")
(espacio agregado al primer parámetro), esto también convertirá los espacios en guiones bajos. Además, no creo que necesite incluirself.
, o al menos me funciona en Ruby 1.9.3.require 'active_support/core_ext/string'
Puedes usar
O solo
Ambas opciones darán lugar
"camel_cased_name"
. Puedes consultar más detalles aquí .fuente
Implementación Ruby de una línea:
Entonces
"SomeCamelCase".to_underscore # =>"some_camel_case"
fuente
/([^A-Z])([A-Z]+)/
lugar, manejar"ALLCAPS"
-> en"allcaps"
lugar de"a_ll_ca_ps"
Hay un método incorporado de Rails llamado 'subrayado' que puede usar para este propósito
El método 'subrayado' generalmente se puede considerar como inverso de 'camelizar'
fuente
Así es como lo hace Rails :
fuente
Receptor convertido a caja de serpiente: http://rubydoc.info/gems/extlib/0.9.15/String#snake_case-instance_method
Esta es la biblioteca de soporte para DataMapper y Merb. ( http://rubygems.org/gems/extlib )
fuente
Echa un vistazo a Snakecase de Ruby Facets
Se manejan los siguientes casos, como se ve a continuación:
De: https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/snakecase.rb
fuente
"Dumb Penguin's Egg".snakecase # => "dumb_penguin's_egg"
Oneliner corto para CamelCases cuando también tiene espacios incluidos (no funciona correctamente si tiene una palabra intermedia con una pequeña letra de inicio):
fuente
underscore
no es parte de rubyEn caso de que alguien busque un caso en el que necesite aplicar un guión bajo a una cadena con espacios y desee convertirlos también en guiones bajos, puede usar algo como esto
O simplemente use .parameterize ('_') pero tenga en cuenta que este está en desuso
fuente
Me gustaría esto:
Mono parche de
String
clase. Hay clases que comienzan con dos o más letras en mayúsculas.fuente
"\1_\2"
a, de lo'\1_\2'
contrario, terminarás en"came\u0001_\u0002ase"
lugar de a"camel_case"
partir de Ruby 2.5 ... tal vez otros también.