或者似乎我必须编写自己的方法? (保持DHA
不受影响):
ruby-1.9.2-p180 :001 > s = 'omega-3 (DHA)'
=> "omega-3 (DHA)"
ruby-1.9.2-p180 :002 > s.capitalize
=> "Omega-3 (dha)"
ruby-1.9.2-p180 :003 > s.titleize
=> "Omega 3 (Dha)"
ruby-1.9.2-p180 :005 > s[0].upcase + s[1..-1]
=> "Omega-3 (DHA)"
答案 0 :(得分:4)
如果我的回答只是垃圾(我不做红宝石),我很抱歉。 但我相信我找到了答案:
答案 1 :(得分:4)
您可以使用带有与每个单词的第一个字符匹配的正则表达式的gsub,并将其替换为大写字符:
ruby-1.9.2-p180 :001 > 'omega-3 (DHA)'.gsub(/\b\w/){ $&.upcase }
=> "Omega-3 (DHA)"
[哦......但是如果你只想要字符串的第一个字符那就过于复杂...... gsub将会执行每个单词的第一个字符。 s[0] = s[0].upcase
可以正常工作。]
答案 2 :(得分:3)
您可以使用.titleize或 .titlecase 来大写单词的第一个字母。
例如: - “manish anand”.titleize => Manish Anand “manish anand”.titlecase => Manish Anand
或者您可以使用
“manish anand” .split.map(&:capitalize).join('') => Manish Anand
答案 3 :(得分:2)
Ruby没有一个具有您正在寻找的确切行为的方法。
答案 4 :(得分:2)
就个人而言,对于这样的简单用途,我会使用:
s[0] = s[0].upcase
答案 5 :(得分:1)
Rails 5添加了这个;它被称为upcase_first
。
在Rails 4或之前,将其添加到字符串扩展名。
class String
def upcase_first
self.sub(/\S/, &:upcase)
end
end
答案 6 :(得分:0)
Ruby没有一种方法只能将第一个字符大写(并且只保留所有其他字母)。您必须像第四个例子那样使用自己的解决方案。
答案 7 :(得分:0)
.humanize接近,但它将其余的字符串包含在内。我认为Tin Man的回答是最简单的。
s[0] = s[0].upcase