Ruby - 将字符串的第一个字母转换为小写的简单方法

huh*_*cat 4 ruby string jruby

有没有一种简单的方法将字符串的第一个字母转换为小写?String#capitalize修改整个字符串.当然,我可以删除第一个字母,将其缩写,然后将其添加到开头.但它似乎有点傻,有更简单的方法吗?

注意:我将只处理英文单词.

编辑:str[0] = str[0].downcase在JRuby 1.6中不起作用:(

编辑2:最后我决定这个:

word = "ABC"
first_capital_letter = word.match(/^([A-Z])/).to_s
 if(first_capital_letter)
   word = word.sub(first_capital_letter, first_capital_letter.downcase)
   puts word
end
Run Code Online (Sandbox Code Playgroud)

Mic*_*ohl 6

如果你真的不想把第一个字母写下来并重新附加它你可以做str.gsub(/^\w{1}/) { |m| m.downcase }但这看起来很傻.


Mch*_*chl 5

irb(main):001:0> str = "ABC"
=> "ABC"
irb(main):002:0> str[0] = str[0].downcase
=> "a"
irb(main):003:0> str
=> "aBC"
Run Code Online (Sandbox Code Playgroud)

  • @Mchl:我认为这不是JRuby中的错误.它对我来说很好.我怀疑OP在1.8模式下运行JRuby,由于显而易见的原因,它不能工作(`String#[]`返回一个`Fixnum`但没有`Fixnum #downcase`). (2认同)

Yos*_*ssi 5

试试这个:

str[0] = str[0].chr.downcase
Run Code Online (Sandbox Code Playgroud)

红宝石1.8.7的回报integer,而不是stringstr[0]:

str = "ABC"
print str[0]        # 65
print str[0..0]     # a
print str[0].chr    # a
Run Code Online (Sandbox Code Playgroud)