175

すべての単語の最初の文字を大文字にし、残りを小文字にする必要があります...

manufacturer.MFA_BRAND.first.upcase

最初の文字を大文字に設定するだけですが、これが必要です。

ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
4

8 に答える 8

308

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なし(#titleizeメソッドにパッチを適用するためのRailsのActiveSupportをロードしますString

require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"

(一部)#titleizeによって処理される文字列のユースケース

  • 「カーク・ダグラス」
  • 「kirk_douglas」
  • 「カーク・ダグラス」
  • 「カーク・ダグラス」
  • 「カーク・ダグラス」

#titleize gotchas

Railstitleizeはダッシュやアンダースコアなどをスペースに変換し、特に@JamesMcMahonが指摘するように、大文字と小文字を区別する状況では、他の予期しない結果を生成する可能性があります。

"hEy lOok".titleize #=> "H Ey Lo Ok"

これは、次のようなキャメルケースのコードを処理することを目的としているためです。

"kirkDouglas".titleize #=> "Kirk Douglas"

このエッジケースに対処するには、#downcase#titleizeを実行する前に、最初に文字列をクリーンアップします。もちろん、そうすると、キャメルケースの単語の区切りがすべて消去されます。

"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
于 2013-02-21T15:11:51.043 に答える
226

これを試して:

puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')

#=> One Two Three Four

また

puts 'one TWO three foUR'.split.map(&:capitalize)*' '
于 2012-11-22T21:29:03.520 に答える
37

"hello world".titleize「HelloWorld」を出力する必要があります。

于 2015-05-11T06:15:33.723 に答える
23

別のオプションは、ブロックを取る正規表現とgsubを使用することです。

'one TWO three foUR'.gsub(/\w+/, &:capitalize)
于 2013-12-16T12:40:06.177 に答える
5
"hello world".split.each{|i| i.capitalize!}.join(' ')
于 2012-11-23T03:21:25.990 に答える
4

String#capitalizeメソッドを調べます。

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-capitalize

于 2012-11-22T21:25:50.543 に答える
1

配列内の各単語の最初の文字を大文字にしようとしている場合は、次のように簡単に入力できます。

array_name.map(&:capitalize)

于 2017-11-19T10:57:13.707 に答える
0

私はこれを同様の問題に使用しました:

'catherine mc-nulty joséphina'.capitalize.gsub(/(\s+\w)/) { |stuff| stuff.upcase }

これは、前の回答を試したときに見た次の奇妙なケースを処理します。

  • -のような単語以外の文字
  • éのような名前で一般的なアクセント付き文字
  • 文字列の途中の大文字
于 2020-07-08T22:43:13.867 に答える