我需要将每个单词的第一个字符设为大写字母,然后将其余字母设为小写字母...
manufacturer.MFA_BRAND.first.upcase
Run Code Online (Sandbox Code Playgroud)
只设置第一个字母大写,但我需要这个:
ALFA ROMEO => Alfa Romeo
AUDI => Audi
BMW => Bmw
ONETWO THREE FOUR => Onetwo Three Four
Run Code Online (Sandbox Code Playgroud)
bou*_*uby 268
在Rails中:
"kirk douglas".titleize => "Kirk Douglas"
#this also works for 'kirk_douglas'
Run Code Online (Sandbox Code Playgroud)
没有Rails:
"kirk douglas".split(/ |\_/).map(&:capitalize).join(" ")
#OBJECT IT OUT
def titleize(str)
str.split(/ |\_/).map(&:capitalize).join(" ")
end
#OR MONKEY PATCH IT
class String
def titleize
self.split(/ |\_/).map(&:capitalize).join(" ")
end
end
Run Code Online (Sandbox Code Playgroud)
没有Rails(加载rails的ActiveSupport来修补#titleize方法String)
require 'active_support/core_ext'
"kirk douglas".titleize #=> "Kirk Douglas"
Run Code Online (Sandbox Code Playgroud)
#titleize方法比最初期望的方法复杂一点,并且会产生意想不到的结果,尤其是@JamesMcMahon所指出的区分大小写的情况:
"hEy lOok".titleize #=> "H Ey Lo Ok"
Run Code Online (Sandbox Code Playgroud)
因为它意味着处理像骆驼一样的代码:
"kirkDouglas".titleize #=> "Kirk Douglas"
Run Code Online (Sandbox Code Playgroud)
要处理这种边缘情况,您可以titleize在运行#titleize之前先清理字符串.当然,如果你这样做,你将消灭任何基于camelCased的单词分隔:
"kirkDouglas".downcase.titleize #=> "Kirkdouglas"
Run Code Online (Sandbox Code Playgroud)
小智 212
试试这个:
puts 'one TWO three foUR'.split.map(&:capitalize).join(' ')
#=> One Two Three Four
Run Code Online (Sandbox Code Playgroud)
要么
puts 'one TWO three foUR'.split.map(&:capitalize)*' '
Run Code Online (Sandbox Code Playgroud)
小智 37
"hello world".titleize 哪个应输出"Hello World".
Bob*_*ler 20
另一个选择是使用正则表达式和gsub,它采用一个块:
'one TWO three foUR'.gsub(/\w+/, &:capitalize)
Run Code Online (Sandbox Code Playgroud)
"hello world".split.each{|i| i.capitalize!}.join(' ')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97006 次 |
| 最近记录: |