字符串破坏性方法似乎不适用于字符串切片
我有一个字符串,我想把第一个字母大写。 我尝试了以下方法:
x='abc' x[0].upcase! # => "A" x # => "abc"
它不能按预期工作,即使方法是upcase!
是破坏性的。 以下作品:
x='abc' x[0] = x[0].upcase # => "A" x # => "Abc"
有人可以解释为什么要upcase!
上面不起作用?
x[0]
返回一个新字符串。 您正在修改此新字符串,然后您不执行任何操作。
注意:
您可以使用capitalize
方法执行相同的操作:
x='abc' x.capitalize! x #=> 'Abc'
upcase!
是破坏性的,它修改字符串x[0]
,但不修改x
。 你没有对x
做任何事情upcase!
。
它是一个不同的字符串对象。 您可以找出对象上是否使用object_id
并进行比较。