我相信这对你们这些极客来说很容易:
假设我有一个字符串“ThisIsMyString”,我想使用 Ruby 将其格式化为“this_is_my_string”。
我怎么做?
马特
我相信这对你们这些极客来说很容易:
假设我有一个字符串“ThisIsMyString”,我想使用 Ruby 将其格式化为“this_is_my_string”。
我怎么做?
马特
如果您可以访问 ActiveSupport(如在 Rails 中,但可在外部使用),则可以使用Inflector 模块underscore
中的方法。
"ClassName".underscore # => class_name
class String def to_under_score (gsub(/[AZ]) { |p| "_" + p.downcase })[1..-1] end end
"MyTestCase".to_under_score => "my_test_case"
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
如果您可以从Rails项目访问ActiveSupport,那么它就像
require 'activesupport'
"ThisIsMyString".underscore