Я использую Rails 2.3.2.
Как преобразовать "Cool"
в "cool"
? Я знаю, что "Cool".downcase
работает, но есть ли метод Ruby/Rails, который делает противоположное capitalize
, то есть uncapitalize
или decapitalize
?
Я использую Rails 2.3.2.
Как преобразовать "Cool"
в "cool"
? Я знаю, что "Cool".downcase
работает, но есть ли метод Ruby/Rails, который делает противоположное capitalize
, то есть uncapitalize
или decapitalize
?
Нет обратного capitalize
, но вы можете свободно сворачивать свои собственные:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
/config/initializers
.
- person DaveMongoose; 08.08.2014
Существует также:
"coolat_cat".camelize(:lower) # => "coolCat"
camelize(uppercase_first_letter = true)
apidock.com/rails/v4.2.7/String/ верблюд
- person animatedgif; 15.11.2016
self
в верблюжью и принимает символ :upper
или :lower
. Я думаю, что документы apidock ошибочны.
- person David Moles; 15.12.2016
Вы также можете сделать это с помощью простого sub
:
"Cool".sub(/^[A-Z]/) {|f| f.downcase }
"Cool".sub(/^[A-Z]/, &:downcase)
достаточно
- person astreal; 16.06.2015
Настоящей инверсии прописной буквы нет, но я думаю, что underscore
подходит близко.
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
Редактировать: underscore
, конечно, является инверсией camelize
, а не capitalize
.
Существует инверсия capitalize
, называемая swapcase
:
"Cool Cat".swapcase #=> "cOOL cAT"
Вы можете использовать тап (чтобы он помещался на одной строке):
"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
Если вы используете Ruby Facets, вы можете сделать первую букву строчной:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
Попробуй это
'Cool'.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize