37

我正在运行 Rails 2.3.2。

我如何转换"Cool""cool"? 我知道可行,但是是否有一种 Ruby / "Cool".downcaseRails 方法可以与capitalize, ieuncapitalizedecapitalize

4

10 回答 10

117

还有:

"coolat_cat".camelize(:lower) # => "coolCat"
于 2012-10-26T08:46:07.343 回答
52

没有 的倒数capitalize,但您可以随意滚动:

class String
  def uncapitalize 
    self[0, 1].downcase + self[1..-1]
  end
end
于 2010-12-17T19:31:11.890 回答
11

你也可以用一个简单的方法来做到这一点sub

"Cool".sub(/^[A-Z]/) {|f| f.downcase }
于 2013-02-01T15:52:04.797 回答
9
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
于 2014-08-08T15:33:11.700 回答
5

没有大写的真正逆,但我认为underscore接近。

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

编辑: underscore当然是相反的camelize,不是capitalize

于 2010-12-17T19:28:15.033 回答
2

您可以使用 tap (使其适合一行):

"JonSkeet".tap { |e| e[0] = e[0].downcase } # => "jonSkeet"
于 2016-03-21T14:03:30.097 回答
2

有一个capitalize被调用的逆swapcase

"Cool Cat".swapcase   #=> "cOOL cAT"
于 2016-10-28T14:46:02.000 回答
1

如果你使用 Ruby Facets,你可以将第一个字母小写:

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

于 2010-12-17T19:31:12.600 回答
1
name = "Viru"

name = name.slice(0).downcase + name[1..(name.length)]
于 2016-12-24T11:46:36.260 回答
1

试试这个

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

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

于 2017-05-30T13:39:12.513 回答