ruby-on-rails - delete - ruby substring
Ruby on Rails descapitaliza primera letra (10)
Estoy corriendo Rails 2.3.2.
¿Cómo convierto "Cool"
a "cool"
? Sé que "Cool".downcase
funciona en caso de "Cool".downcase
, pero ¿existe un método de Ruby / Rails que haga lo contrario de capitalize
, es decir, uncapitalize
o decapitalize
?
Hay un inverso de capitalize
llamado swapcase
:
"Cool Cat".swapcase #=> "cOOL cAT"
No hay inversa de capitalize
, pero puede sentirse libre de rodar su propia cuenta:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
No hay una inversión real de capitalizar, pero creo que el underscore
se acerca.
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
Editar: underscore
es, por supuesto, la inversa de camelize
, no capitalize
.
Prueba esto
''Cool''.sub(/^([A-Z])/) { $1.tr!(''[A-Z]'', ''[a-z]'') }
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize
Puedes usar tap (para que quepa en una línea):
"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
Si usas Ruby Facets, puedes escribir en minúscula la primera letra:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
También hay:
"coolat_cat".camelize(:lower) # => "coolCat"
También puedes hacer esto con un simple sub
:
"Cool".sub(/^[A-Z]/) {|f| f.downcase }
name = "Viru"
name = name.slice(0).downcase + name[1..(name.length)]
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"