Ruby on Rails:将“SomeWordHere”转换为“some word here”

时间:2010-05-16 02:56:22

标签: ruby-on-rails ruby

我知道你可以这样做:

"SomeWordHere".underscore.gsub("_", " ") 

得到“这里的一些词”。

我认为对于这么简单的事情来说可能有点太多了。是否有更有效的方法(可能是内置方法?)将“SomeWordHere”转换为“某些字在这里”?

4 个答案:

答案 0 :(得分:22)

alt text

方法下划线人性化是专为表格,类/包名称等之间的转换而设计的。您最好使用自己的代码进行替换以避免惊喜。见评论。

"SomeWordHere".underscore => "some_word_here"

"SomeWordHere".underscore.humanize => "Some word here"

"SomeWordHere".underscore.humanize.downcase => "some word here"

答案 1 :(得分:9)

我认为这是一个更简单的解决方案:

"SomeWordHere".titleize.downcase

答案 2 :(得分:5)

您可以使用正则表达式:

puts "SomeWordHere".gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase

输出:

some word here

您可能更喜欢这个的一个原因是,如果您的输入可能包含破折号或下划线,并且您不想用空格替换它们:

puts "Foo-BarBaz".underscore.gsub('_', ' ')
puts "Foo-BarBaz".gsub(/[a-zA-Z](?=[A-Z])/, '\0 ').downcase

输出:

foo bar baz
foo-bar baz

答案 3 :(得分:1)

没有我知道的内置方法。比单线更高效?不要这么认为。可能是humanize而不是gsub,但你没有得到完全相同的输出。