什么时候会使用字符串的替换方法?

时间:2014-05-25 07:39:03

标签: ruby

我一直在搞乱,并决定看看"abcde".replace("a", "e")是否会返回"ebcde"。事实证明,这不是替换工作的方式(我承认我猜测方法名称,看看是否存在这样的用途)。

在阅读文档后,我发现它有奇怪的行为。

string = "abcde"
string.replace("e") #=> "e"

string现在是"e"

替换方法有什么意义?对我来说,它看起来像一个setter方法,但你可以轻松地做string = "e"

是否有替换的特定用例?

3 个答案:

答案 0 :(得分:4)

replace更改当前实例的内容,而不是分配新实例。见差异:

a = 'old_string'
b = a
b.replace 'new_string'
a
# => "new_string"

VS

a = 'old_string'
b = a
b = 'new_string'
a
# => "old_string"

答案 1 :(得分:1)

与Uri的答案相似:

a = "foo"
# => "foo"

a.object_id
# => 70267150553520

a.replace("bar")
# => "bar"

a.object_id
# => 70267150553520

答案 2 :(得分:1)

它可用于更改传递给方法的参数值:

def change(string)
  string.replace('bar')
end

s = 'foo'
change(s)

s   #=> 'bar'