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

Updated:


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

以下、備忘録です。

0. 前提条件

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

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

File: 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}"

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


以上。





 

Sponsored Link

 

Comments