Ruby on Rails uncapitalize первая буква

я запускаю Rails 2.3.2.

как сконвертировать "Cool" до "cool"? Я знаю "Cool".downcase работает, но есть ли метод Ruby / Rails, который делает противоположное capitalize, то есть,uncapitalize или decapitalize?

10 ответов


нет обратного capitalize, но вы можете свободно свернуть свой собственный:

class String
  def uncapitalize 
    self[0, 1].downcase + self[1..-1]
  end
end

также:

"coolat_cat".camelize(:lower) # => "coolCat"

вы также можете сделать это с простой sub:

"Cool".sub(/^[A-Z]/) {|f| f.downcase }

str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"

нет реального обратного капитализации, но я думаю underscore приближается.

"CoolCat".underscore  #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize   #=> "CoolCat"

Edit: underscore, конечно, является обратным camelize, а не capitalize.


вы можете использовать tap (чтобы он помещался на одной строке):

"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"

Если вы используете рубиновые грани, вы можете записать в нижнем регистре первую букву:

https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb


существует обратнаяcapitalize под названием swapcase:

"Cool Cat".swapcase   #=> "cOOL cAT"

попробуй такое

'Cool'.sub(/^([A-Z])/) { .tr!('[A-Z]', '[a-z]') }

https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize


name = "Viru"

name = name.slice(0).downcase + name[1..(name.length)]