Mat*_*iby 17 ruby ruby-on-rails
为什么titlecase这个名字搞得一团糟?我有:
John Mark McMillan
Run Code Online (Sandbox Code Playgroud)
它变成了:
>> "john mark McMillan".titlecase
=> "John Mark Mc Millan"
Run Code Online (Sandbox Code Playgroud)
为什么在姓氏上添加了空格?
基本上我在我的模型中有这个:
before_save :capitalize_name
def capitalize_name
self.artist = self.artist.titlecase
end
Run Code Online (Sandbox Code Playgroud)
我试图确保所有名称都是数据库中的标题,但是在具有camelcase名称的情况下,它会失败.任何想法如何解决这一问题?
Mik*_*wis 17
如果Rails不够好,你总是可以自己做:
class String
def another_titlecase
self.split(" ").collect{|word| word[0] = word[0].upcase; word}.join(" ")
end
end
"john mark McMillan".another_titlecase
=> "John Mark McMillan"
Run Code Online (Sandbox Code Playgroud)
这种方法比正则表达式解决方案快一小部分:
我的解决方案
ruby-1.9.2-p136 :034 > Benchmark.ms do
ruby-1.9.2-p136 :035 > "john mark McMillan".split(" ").collect{|word|word[0] = word[0].upcase; word}.join(" ")
ruby-1.9.2-p136 :036?> end
=> 0.019311904907226562
Run Code Online (Sandbox Code Playgroud)
正则表达式解决方案:
ruby-1.9.2-p136 :042 > Benchmark.ms do
ruby-1.9.2-p136 :043 > "john mark McMillan".gsub(/\b\w/) { |w| w.upcase }
ruby-1.9.2-p136 :044?> end
=> 0.04482269287109375
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6656 次 |
| 最近记录: |