すべてのWordの最初の文字を大文字にし、残りを小文字にする必要があります...
manufacturer.MFA_BRAND.first.upcase
最初の文字を大文字に設定するだけですが、これが必要です:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
これを試して:
puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')
#=> One Two Three Four
または
puts 'one TWO three foUR'.split.map(&:capitalize)*' '
Railsの場合:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
railsなし:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")
#OBJECT IT OUT
def titleize(str)
str.split(/ |\_/).map(&:capitalize).join(" ")
end
#OR MONKEY PATCH IT
class String
def titleize
self.split(/ |\_/).map(&:capitalize).join(" ")
end
end
Railsなし(RailsのActiveSupportをロードして、#titleizeメソッドをString
にパッチします)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
Railsのtitleize
は、ダッシュやアンダースコアなどをスペースに変換し、特に@JamesMcMahonが指摘した大文字と小文字を区別する状況では、他の予期しない結果を生成する可能性があります。
"hEy lOok".titleize #=> "H Ey Lo Ok"
次のようなキャメルケースのコードを処理するためのものです。
"kirkDouglas".titleize #=> "Kirk Douglas"
このEdgeの場合に対処するには、#titleizeを実行する前に、最初に#downcase
で文字列を消去できます。もちろん、それを行うと、キャメルケースされたWordの分離を一掃できます。
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
「Hello World」を出力する"hello world".titleize
。
別のオプションは、ブロックを取る正規表現とgsubを使用することです。
'one TWO three foUR'.gsub(/\w+/, &:capitalize)
String#capitalizeメソッドを調べます。
http://www.Ruby-doc.org/core-1.9.3/String.html#method-i-capitalize
"hello world".split.each{|i| i.capitalize!}.join(' ')
配列内の各Wordの最初の文字を大文字にしようとする場合、単純にこれを置くことができます:
array_name.map(&:capitalize)