質問

以下の関数を使用するWebフレームワークを作成しました:

def to_class(text)
    text.capitalize
    text.gsub(/(_|-)/, '')
end
.

Projectのsnake_casedまたはhyphen-casedPascalCasedクラス名に表示するディレクトリ名を回す。

問題は、_-のみを削除し、次の文字を大文字にしません。.capitalize、または.upcaseを使用すると、snake/hyphen_/-casedの名前を適切なPascalCasedクラス名にする方法がありますか?

役に立ちましたか?

解決

これは_ケーシング文字列を配列に分割します。すべてのメンバーを大文字にして、配列を文字列に戻します。

def to_pascal_case(str)
  str.split(/-|_/).map(&:capitalize).join
end

p to_pascal_case("snake_cased") #=>"SnakeCased"
.

あなたのコードはいくつかの理由で機能しません:

  • 資本化方法の結果として生じるオブジェクトは廃棄されます - あなた text.capitalize!またはtext = text.capitalizeのようなものをする必要があります。
  • しかしcapitalizeメソッドだけが、文字列の最初の文字をupcasesです。 すべての単語の最初の文字ではありません。

他のヒント

gsub(/(?:^|[_-])([a-z])?/) { $1.upcase unless $1.nil? }
.

Railsには、 camelize と呼ばれる同様の方法があります。これは基本的に[a-z0-9]からなる文字列のあらゆる部分を大文字にし、他のすべてを削除します。

あなたはおそらくそれを小さなものにゴルフをすることができますが、:

txt = 'foo-bar_baz'
txt.gsub(/(?:^|[-_])([a-z])/) { |m| m.upcase }.gsub(/[-_]/, '') # FooBarBaz
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top