我正在运行Rails 2.3.2。
如何将"Cool"
转换为"cool"
?我知道"Cool".downcase
有效,但是有一个Ruby / Rails方法与capitalize
相反,即uncapitalize
或decapitalize
吗?
答案 0 :(得分:98)
还有:
"coolat_cat".camelize(:lower) # => "coolCat"
答案 1 :(得分:47)
capitalize
没有倒数,但您可以随意自行推送:
class String
def uncapitalize
self[0, 1].downcase + self[1..-1]
end
end
答案 2 :(得分:8)
您也可以使用简单的sub
:
"Cool".sub(/^[A-Z]/) {|f| f.downcase }
答案 3 :(得分:7)
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
答案 4 :(得分:4)
没有真正的大写反转,但我认为underscore
接近。
"CoolCat".underscore #=> "cool_cat"
"cool_cat".capitalize #=> "Cool_cat"
"cool_cat".camelize #=> "CoolCat"
修改: underscore
当然是camelize
的倒数,而不是capitalize
。
答案 5 :(得分:2)
您可以使用点按(以便它适合一行):
"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
答案 6 :(得分:1)
如果您使用Ruby Facets,则可以小写第一个字母:
https://github.com/rubyworks/facets/blob/master/lib/core/facets/string/uppercase.rb
答案 7 :(得分:1)
有capitalize
的倒数称为swapcase
:
"Cool Cat".swapcase #=> "cOOL cAT"
答案 8 :(得分:1)
试试这个
'Cool'.sub(/^([A-Z])/) { $1.tr!('[A-Z]', '[a-z]') }
https://apidock.com/ruby/XSD/CodeGen/GenSupport/uncapitalize
答案 9 :(得分:0)
name = "Viru"
name = name.slice(0).downcase + name[1..(name.length)]