各単語の最初の文字を大文字にし、残りを小文字にする必要があります...
manufacturer.MFA_BRAND.first.upcase
最初の文字だけを大文字に設定していますが、次のものが必要です:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
ベストアンサー1
Railsの場合:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
レールなし:
"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"
#titleize によって処理される (一部の) 文字列の使用例
- 「カーク・ダグラス」
- 「カーク・ダグラス」
- 「カーク・ダグラス」
- 「カーク・ダグラス」
- 「カーク・ダグラス」
#titleize の落とし穴
Rails はtitleize
ダッシュやアンダースコアなどをスペースに変換し、@JamesMcMahon が指摘したように、特に大文字と小文字を区別する状況では予期しない結果が生じる可能性があります。
"hEy lOok".titleize #=> "H Ey Lo Ok"
これは次のようなキャメルケースのコードを処理することを意図しているためです。
"kirkDouglas".titleize #=> "Kirk Douglas"
この特殊なケースに対処するには、#titleize を実行する前に、まず文字列をクリーンアップします#downcase
。もちろん、これを行うと、キャメルケースの単語の区切りがすべて消去されます。
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"