ClassName到class_name

时间:2009-07-06 16:39:11

标签: ruby string formatting format string-formatting

我确信这对你来说很容易:

假设我有一个字符串“ThisIsMyString”,我想使用Ruby将其格式化为“this_is_my_string”。

我该怎么做?

马特

4 个答案:

答案 0 :(得分:5)

如果您有权访问ActiveSupport(如在Rails中,但在外部可用),则可以使用Inflector module中的underscore方法。

"ClassName".underscore # => class_name

答案 1 :(得分:2)

class String    def to_under_score       (gsub(/ [A-Z]){| p |“_”+ p.downcase})[1 ..- 1]    结束 端

“MyTestCase”.to_under_score => “my_test_case”

来自http://www.ruby-forum.com/topic/113697#265696

答案 2 :(得分:1)

Ruby Facets有一个函数来执行此操作:String#underscore。这是它的source

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

答案 3 :(得分:1)

如果您可以从 Rails 项目访问 ActiveSupport ,那就像

一样简单
require 'activesupport'
"ThisIsMyString".underscore