mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Ruby - キャメルケース <-> スネークケースの変換!

[ プログラミング ] [ Ruby, 正規表現 ]

こんばんは。

Ruby で、キャメルケースな class 名をスネークケースに変換してメソッド内で使用したかったので、 String クラスを拡張して実装してみました。(結局、よくある方法ですが)

以下、備忘録です。

0. 前提条件

  • Ruby 2.3.1-p112 での作業を想定。

1. 実装とスクリプト作成例

conv_camel_snake.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class String
  def to_camel
    self.split(/_/).map(&:capitalize).join
    # or
    #self.split(/_/).map{ |w| w[0] = w[0].upcase; w }.join
  end

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

src = "CamlCase1ASnakeCase2B"
puts "  SRC: #{src}"
snake = "CamlCase1ASnakeCase2B".to_snake
puts "SNAKE: #{snake}"
camel = snake.to_camel
puts "CAMEL: #{camel}"

スネークケース変換時、連続する大文字はそれぞれに分離し、数字は分離しないようにしている。(※当方はこれで満足しているが、必要であれば各自調整をしてください)


以上。

Comments