Подтвердить что ты не робот

Ruby on Rails некапитализует первую букву

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

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

4b9b3361

Ответ 1

Нет инверсии capitalize, но вы можете свободно откатываться:

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

Ответ 2

Существует также:

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

Ответ 3

Вы также можете сделать это с помощью простого sub:

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

Ответ 4

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

Ответ 5

Не существует реального инверсированного значения, но я думаю, что underscore близок.

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

Изменить: underscore, конечно, является инверсией camelize, а не capitalize.

Ответ 6

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

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

Ответ 8

Существует инверсия capitalize, называемая swapcase:

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

Ответ 10

name = "Viru"

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