Ruby on Rails:将“SomeWordHere”转换为“some word here”
我知道你可以这样做:
"SomeWordHere".underscore.gsub("_", " ")
得到“在这里说”。
我认为对于这么简单的事情来说可能有点太多了。 是否有更有效的方法(可能是内置方法?)将“SomeWordHere”转换为“某些字在这里”?
下划线和人性化的方法是为表,类/包名等之间的转换而设计的。最好使用自己的代码进行替换以避免意外。 看评论。
"SomeWordHere".underscore => "some_word_here" "SomeWordHere".underscore.humanize => "Some word here" "SomeWordHere".underscore.humanize.downcase => "some word here"
我认为这是一个更简单的解决方案:
"SomeWordHere".titleize.downcase
您可以使用正则表达式:
puts "SomeWordHere".gsub(/[a-zA-Z](?=[AZ])/, '\0 ').downcase
输出:
some word here
您可能更喜欢这个的一个原因是,如果您的输入可能包含破折号或下划线,并且您不想用空格替换它们:
puts "Foo-BarBaz".underscore.gsub('_', ' ') puts "Foo-BarBaz".gsub(/[a-zA-Z](?=[AZ])/, '\0 ').downcase
输出:
foo bar baz foo-bar baz
不,我知道没有内置的方法。 比单线更高效? 不要这么认为。 也许humanize
而不是gsub
,但你没有得到完全相同的输出。