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

时间:2011-07-28 11:10:12

标签: 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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

试试这个:

str[0] = str[0].chr.downcase

对于integer,Ruby 1.8.7返回string而不是str[0]

str = "ABC"
print str[0]        # 65
print str[0..0]     # a
print str[0].chr    # a

答案 3 :(得分:2)

要在Ruby 1.8和Ruby 1.9模式下兼容,您可以使用:

str[0..0] = str[0..0].downcase

答案 4 :(得分:0)

这将有效:

str.sub(/^\w/) {$&.downcase}

说明:此处,sub替换第一个匹配的表达式,而不是使用gsub替换所有匹配的匹配项。正则表达式^\w从整个字符串中选择第一个字母数字字符并将其传递给块。 $&捕获匹配的字符串,downcase将字符串转换为小写。

示例:

2.3.0 :001 > str = 'Regular expressions in Ruby'
=> "Regular expressions in Ruby" 
2.3.0 :002 > str.sub(/^\w/) {$&.downcase}
=> "regular expressions in Ruby"