资本化第一个字符并按原样保留其他字符

时间:2011-08-17 10:05:25

标签: ruby ruby-on-rails-3

我只想把第一个字母大写,然后保留其他字符。

例如:

"fooBar".titleize返回"Foo Bar"。应该返回 FooBar

"foo_Bar".capitalize返回"Foo_bar"应返回 Foo_Bar

我能做到这一点吗?

4 个答案:

答案 0 :(得分:4)

irb(main):001:0> s = "foo_Bar"
=> "foo_Bar"
irb(main):002:0> s[0] = s[0].upcase
=> "F"
irb(main):003:0> s
=> "Foo_Bar"

或使用正则表达式进行就地替换:

irb(main):001:0> s = "foo_Bar"
=> "foo_Bar"
irb(main):002:0> s.sub!(/^\w/) {|x| x.upcase}
=> "Foo_Bar"

答案 1 :(得分:4)

class String
  def fazzinize
    first, *last = self.split("_")
    [first.capitalize, *last].join("_")
  end
end

"fooBar".fazzinize
#=> "Foobar"
"foo_Bar".fazzinize
#=> "Foo_Bar"

<强> UPD

如果是拼写错误:

  

“fooBar”.titleize返回“Foo Bar”。应该返回Foobar - &gt; FooBar的

然后@Mchi是对的

class String
  def fazzinize
    self[0] = self[0].upcase; self;
  end
end

答案 2 :(得分:1)

irb(main):001:0> s = "foo_Bar"
=> "foo_Bar"
irb(main):002:0> s1 = s.slice(0,1).capitalize + s.slice(1..-1)
=> "Foo_Bar"

答案 3 :(得分:0)

只需substitute第一个字符,其大写版本使用块。

"fooBar".sub(/^./) { |char| char.upcase }