有没有一种简单的方法可以将字符串的第一个字母转换为小写? 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
答案 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"