将字符串中的第一个字符转换为upcase

时间:2015-08-31 23:30:15

标签: ruby

是否有一个函数(或一小段代码)将字符串中的第一个字符转换为大写而不修改其他字符?

  1. abcAbc
  2. aBcABc
  3. aBCABC
  4. ABCABC(无变化)
  5. ABcABc(无变化)
  6. AbcAbc(无变化)
  7. 请注意String#capitalize在情况2,3,4和5中不起作用;它将它们转换为Abc,失去了原始的大写字母。 (ActiveSupport的titleize也存在同样的问题。)

    我也希望避免修改原始字符串。

4 个答案:

答案 0 :(得分:2)

foo = "fOo"
newfoo = foo[0].upcase + foo[1..-1]

答案 1 :(得分:2)

您可以使用String#sub和正则表达式来获取第一个字符:

a = 'aBc'
a.sub(/./, &:upcase)
# => "ABc"

如果需要,可以使用sub!并改变字符串

答案 2 :(得分:2)

require 'unicode_utils'

"éclair".sub(/./, UnicodeUtils.upcase($&))
  #=> "Éclair"

答案 3 :(得分:0)

怎么样:

string = "aBC".dup
string[0] = string[0].upcase