web-dev-qa-db-ja.com

文字列内の各単語の最初の文字を大文字にする方法

RailsのRuby)の文字列で各世界の最初の文字を大文字にする方法:

"goyette-xyz-is wide road".titleize returns "Goyette Xyz Is Wide Road".

次のような出力が必要です。

"goyette-xyz is wide road".SOME-FUNCTION should return "Goyette-xyz-is Wide Road".

titleizeはアンダースコアとハイフンを削除しますが、文字列に残しておきたいです。

13
kashif

この.titleizeのように"i want to make the first letter of each work into a cap".titleizeを使用できます

あなたはapidocksから titleize についてもっと学ぶことができます

titleize(Word)public

すべての単語を大文字にし、文字列内の一部の文字を置き換えて、見栄えの良いタイトルを作成します。 titleizeは、きれいな出力を作成するためのものです。 Rails内部では使用されません。

titleizeは、titlecaseとしてもエイリアスされます。

例:

"man from the boondocks".titleize   # => "Man From The Boondocks"
"x-men: the last stand".titleize    # => "X Men: The Last Stand"
"TheManWithoutAPast".titleize       # => "The Man Without A Past"
"raiders_of_the_lost_ark".titleize  # => "Raiders Of The Lost Ark"

この現実がどのように機能するか

# File activesupport/lib/active_support/inflector/methods.rb, line 115
def titleize(Word)
  humanize(underscore(Word)).gsub(/\b('?[a-z])/) { $1.capitalize }
end

実際に作業中に「-」を保持するには、このように文字列クラスに新しいメソッドを追加できます。

# ./lib/core_ext/string.rb
class String
  #"goyette-xyz-is wide road".titleize_with_dashes#=> "Goyette-xyz-is Wide Road"
  def titleize_with_dashes
    humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
  end
end
42
MZaragoza

あなたは自分で適切な方法を実装することができます:

class String
  def my_titleize
    split.map(&:capitalize).join(' ')
  end
end

"goyette-xyz-is wide road".my_titleize
#=> "Goyette-xyz-is Wide Road"
6
Marek Lipka

そして、今の私のように、破線の単語であっても最初の文字を大文字にする必要がある場合は、次のように行うことができます。

def titleize_and_keep_dashes(text)
  text.split.map(&:capitalize).join(' ').split('-').map(&:titleize).join('-')
end
titleize_and_keep_dashes("goyette-xyz-is wide road")
# => "Goyette-Xyz Is Wide Road".
2
Jeremy F.

追加 .capitalize文字列へのメソッド。最初の文字を自動的に大文字にします。

0
ajknzhol