字符串破坏性方法似乎不适用于字符串切片

时间:2014-05-29 11:02:08

标签: ruby string

我有一个字符串,我想把第一个字母大写。我尝试了以下方法:

x='abc'
x[0].upcase! # => "A"
x # => "abc"

即使方法upcase!具有破坏性,它也无法按预期工作。以下作品:

x='abc'
x[0] = x[0].upcase # => "A"
x # => "Abc"

有人可以解释为什么upcase!无法正常工作吗?

3 个答案:

答案 0 :(得分:5)

x[0]正在返回一个新字符串。您正在修改此新字符串,然后您不执行任何操作。

注意:

您可以使用capitalize方法执行相同操作:

x='abc'
x.capitalize!
x    #=> 'Abc'

答案 1 :(得分:2)

upcase!具有破坏性,它会修改字符串x[0],但不会修改x。您没有对x upcase!做任何事情。

答案 2 :(得分:0)

它是一个不同的字符串对象。您可以了解对象是否使用object_id并进行比较。

相关问题