ruby首字母大写每个单词
我需要使每个字的第一个字符大写,并使其余的小写…
manufacturer.MFA_BRAND.first.upcase
只是设置第一个字母大写,但我需要这个:
ALFA ROMEO => Alfa Romeo AUDI => Audi BMW => Bmw ONETWO THREE FOUR => Onetwo Three Four
尝试这个:
puts 'one TWO three foUR'.split.map(&:capitalize).join(' ') #=> One Two Three Four
要么
puts 'one TWO three foUR'.split.map(&:capitalize)*' '
在Rails中:
"kirk douglas".titleize => "Kirk Douglas" #this also works for 'kirk_douglas'
无轨道:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ") #OBJECT IT OUT def titleize(str) str.split(/ |\_/).map(&:capitalize).join(" ") end
无轨道(负载轨的ActiveSupport修补#titleize方法String
)
require 'active_support/core_ext' "kirk douglas".titleize #=> "Kirk Douglas"
(一些)由#titleize处理的string用例
- “kirk douglas”
- “kirk_douglas”
- “柯克 – 道格拉斯”
- “柯克·道格拉斯”
- “柯克·道格拉斯”
#titleize陷阱
#titleize方法比最初期待的要复杂一些,可能会产生意想不到的结果,特别是在@JamesMcMahon指出的区分大小写的情况下:
"hEy lOok".titleize #=> "H Ey Lo Ok"
因为它是为了处理骆驼式的代码,如:
"kirkDouglas".titleize #=> "Kirk Douglas"
要处理这种边缘情况,您可以在运行#titleize之前先用#downcase
清理string。 当然,如果你这样做,你会消除任何camelCased分词:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
"hello world".titleize
应该输出“Hello World”。
另一个select是使用正则expression式和gsub,它采取一个块:
'one TWO three foUR'.gsub(/\w+/, &:capitalize)
"hello world".split.each{|i| i.capitalize!}.join(' ')