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"