Ruby on Rails没有首字母大写

时间:2010-12-17 19:23:29

标签: ruby-on-rails ruby lowercase capitalize

我正在运行Rails 2.3.2。

如何将"Cool"转换为"cool"?我知道"Cool".downcase有效,但是有一个Ruby / Rails方法与capitalize相反,即uncapitalizedecapitalize吗?

10 个答案:

答案 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)]