我有一个字符串,我想把第一个字母大写。我尝试了以下方法:
x='abc'
x[0].upcase! # => "A"
x # => "abc"
即使方法upcase!
具有破坏性,它也无法按预期工作。以下作品:
x='abc'
x[0] = x[0].upcase # => "A"
x # => "Abc"
有人可以解释为什么upcase!
无法正常工作吗?
答案 0 :(得分:5)
x[0]
正在返回一个新字符串。您正在修改此新字符串,然后您不执行任何操作。
注意:
您可以使用capitalize
方法执行相同操作:
x='abc'
x.capitalize!
x #=> 'Abc'
答案 1 :(得分:2)
upcase!
具有破坏性,它会修改字符串x[0]
,但不会修改x
。您没有对x
upcase!
做任何事情。
答案 2 :(得分:0)
它是一个不同的字符串对象。您可以了解对象是否使用object_id
并进行比较。