1. ホーム
  2. ruby-on-rails

[解決済み】rubyでキャメルケースからアンダースコアケースに変換する方法

2022-04-04 15:31:51

質問

キャメルケースの文字列をアンダースコアで区切られた文字列に変換する関数はありますか?

このようなものが欲しいのです。

"CamelCaseString".to_underscore      

を実行すると、"camel_case_string"が返されます。

...

解決方法は?

RailsのActiveSupport は、以下のようにしてStringにアンダースコアを追加します。

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

そうすれば、楽しいことができるようになります。

"CamelCase".underscore
=> "camel_case"