Ruby或Rails是否只有一种方法可以将第一个字符大写?

时间:2011-04-13 19:26:36

标签: ruby-on-rails ruby

或者似乎我必须编写自己的方法? (保持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)" 

8 个答案:

答案 0 :(得分:4)

如果我的回答只是垃圾(我不做红宝石),我很抱歉。 但我相信我找到了答案:

Ruby equivalent of PHP's ucfirst() function

答案 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