Ruby相当于PHP的ucfirst()函数

时间:2009-09-25 23:22:30

标签: ruby-on-rails ruby string

Ruby中最好的方法是什么(使用Rails,如果相关的话)来大写字符串的第一个字母?

注意String#capitalize不是我想要的,因为除了大写字符串的第一个字母外,这个函数还使所有其他字符小写(我不想要 - 我想离开他们没有动过):

>> "a A".capitalize
=> "A a"

9 个答案:

答案 0 :(得分:15)

你可以使用“sub”来获得你想要的东西(注意:我没有用多字节字符串测试它)

"a A".sub(/^(\w)/) {|s| s.capitalize}

(你当然可以将monkeypatch String添加为方法,如果你愿意的话)

答案 1 :(得分:14)

在Rails中,您使用String#titleize方法:

“测试字符串标题化方法”.titleize#=> “测试字符串标题化方法”

答案 2 :(得分:6)

大写第一个char,并将其保存回字符串

s = "a A"
s[0] = s[0,1].upcase
p s # => "A A"

或者,

class String
  def ucfirst!
    self[0] = self[0,1].upcase
    self
  end
end

答案 3 :(得分:3)

如果您不想修改原始字符串,可以这样做:

class String
  def ucfirst
    str = self.clone
    str[0] = str[0,1].upcase
    str
  end
end

答案 4 :(得分:2)

我提出以下解决方案,通过空白

'  ucfirstThis'.sub(/\w/, &:capitalize)
# => "UcfirstThis"

答案 5 :(得分:2)

答案 6 :(得分:1)

如果您正在寻找与PHP ucfirst()真正相似的功能,请尝试

"a A".gsub(/(\w+)/) {|s| s.capitalize}

将导致“A A”。

"a neW APPROACH".gsub(/(\w+)/) {|s| s.capitalize}

将导致“A New Approach”。

您可以使用:

扩展String类
class String
  def ucfirst
    self.gsub(/(\w+)/) { |s| s.capitalize }
  end

  def ucfirst!
    self.gsub!(/(\w+)/) { |s| s.capitalize }
  end
end

答案 7 :(得分:0)

看看这个。

capitalizing-first-letter-of-each-word

没有内置功能。您需要拆分字母并重新加入或尝试Rails的String#titleize并查看它是否符合您的要求。

答案 8 :(得分:0)

一个班轮不依赖于ActiveSupport。不确定它完全是防弹的:

"my great uncle and grand-ma".gsub(/(\A\w|\s\w)/) { |m| m.upcase }
# My Great Uncle And Grand-ma