2009-07-06 21 views
1

我敢肯定,這是一個容易爲你怪才:類名CLASS_NAME

說我有一個字符串「ThisIsMyString」我要像「this_is_my_string」用Ruby進行格式化。

我該怎麼做?

馬特

回答

5

如果您有機會獲得的ActiveSupport(如導軌,但外部可用),則可以使用Inflector module中的underscore方法。

"ClassName".underscore # => class_name 
1

Ruby Facets有一個函數來做到這一點:字符串#下劃線。下面是它的source

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

如果您已經從Rails的訪問的ActiveSupport項目,它是那樣簡單

require 'activesupport' 
"ThisIsMyString".underscore 
+0

只是好奇爲什麼我的答案(誰在接受答案一兩分鐘之前,基本上是相同的)得到了downvoted。 – 2009-07-06 22:32:57

+0

是的,這似乎有點苛刻。也許是因爲你做了不必要的(如果你認爲這是一個Rails項目)需要? – 2009-07-07 04:49:58

相關問題