I'm running Rails 2.3.2.
How do I convert "Cool"
to "cool"
? I know "Cool".downcase
works, but is there a Ruby/Rails method that does the opposite of capitalize
, i.e., uncapitalize
or decapitalize
?
There is no inverse of capitalize
, but you can feel free to roll your own:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
There is also:
"coolat_cat".camelize(:lower) # => "coolCat"
You could also do this with a simple sub
:
"Cool".sub(/^[A-Z]/) {|f| f.downcase }
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
There is no real inverse of capitalize, but I think underscore
comes close.
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
Edit: underscore
is of course the inverse of camelize
, not capitalize
.
There is an inverse of capitalize
called swapcase
:
"Cool Cat".swapcase #=> "cOOL cAT"
You can use tap (so that it fits on one line):
"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
If you use Ruby Facets, you can lowercase the first letter:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
Try this
'Cool'.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize
name = "Viru"
name = name.slice(0).downcase + name[1..(name.length)]
来源:https://stackoverflow.com/questions/4474028/ruby-on-rails-uncapitalize-first-letter