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