web-dev-qa-db-ja.com

Ruby on Rails最初の文字を大文字にしない

私は実行していますRails 2.3.2。

"Cool""cool"に変換するにはどうすればよいですか? "Cool".downcaseが機能することは知っていますが、capitalizeの反対のRuby/Railsメソッド、つまりuncapitalizeまたはdecapitalizeはありますか?

35
ma11hew28

capitalizeの逆行列はありませんが、自由に自分でロールすることができます。

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

もあります:

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

単純なsubでこれを行うこともできます。

"Cool".sub(/^[A-Z]/) {|f| f.downcase }
9
JP.
str = "Directly to the south"
str[0] = str[0].downcase
puts str
#=> "directly to the south"
7
boulder_ruby

大文字の逆はありませんが、underscoreが近いと思います。

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

編集:underscoreはもちろんcamelizeの逆であり、capitalizeではありません。

4
iain

タップを使用できます(1行に収まるように):

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

capitalizeと呼ばれるswapcaseの逆があります。

"Cool Cat".swapcase   #=> "cOOL cAT"
2
Nitin Savant

これを試して

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

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

1
Rahul Patel

Rubyファセットを使用する場合は、最初の文字を小文字にすることができます。

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

1
rmk
name = "Viru"

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