1

我相信这对你们这些极客来说很容易:

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

我怎么做?

马特

4

4 回答 4

5

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

"ClassName".underscore # => class_name
于 2009-07-06T16:56:07.210 回答
2

class String def to_under_score (gsub(/[AZ]) { |p| "_" + p.downcase })[1..-1] end end

"MyTestCase".to_under_score => "my_test_case"

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

于 2009-07-06T16:43:58.170 回答
1

Ruby Facets有一个函数可以做到这一点:String#underscore。这是它的来源

  def underscore
    gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
  end
于 2009-07-06T16:51:25.377 回答
1

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

require 'activesupport'
"ThisIsMyString".underscore
于 2009-07-06T16:51:36.157 回答