rubyでsnake_caseをCamelCaseへ変換する

  • 14
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

コード生成とかしてる時に _ で要素を繋いだ snake_case から、大文字小文字の組み合わせで単語の繋ぎ目を表現する CamelCase へ変換する必要に駆られる事があります。
Rails使ってればActiveRecordがなんとかしてくれるのですが、RailsばかりがRubyではありません。

書けば済む話ですが、ググってもそのものズバリのスニペットが見当たらなかったのでおいておきます。

class String
  def to_camel()
    self.split("_").map{|w| w[0] = w[0].upcase; w}.join
  end
end

こう書いておくと

"snake_case".to_camel # => SnakeCase

こうなります。

ちなみに逆方向は

class String
  def to_snake()
    self
      .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
      .gsub(/([a-z\d])([A-Z])/, '\1_\2')
      .tr("-", "_")
      .downcase
  end
end

こんな感じに書くらしいです。
参考URL: Converting camel case to underscore case in ruby