修改字符串的实例

时间:2012-12-12 11:18:56

标签: ruby string mutable

我有一个字符串:

str="D\\projects\\myown\\java"

我将此字符串分配给两个变量,如:

str1=str
str2=str

我做了以下操作后:

idgb1=str1.gsub!("\\","_")

我将str1视为D_projects_myown_javastr2是相同的。为什么会这样?我不希望str2更改其值。

2 个答案:

答案 0 :(得分:5)

str1str2只是对str的引用,字符串不会复制到这些变量。并String#gsub!更新了字符串。

如果你想保持str2完整,你需要这样做:

str2 = str.dup

str2 = str.clone

此外,如果您使用String#gsub代替String#gsub!,则不会更改strstr2

答案 1 :(得分:1)

有关更多信息,您可能还想阅读浅层和深层副本,这里有一个维基百科的链接,解释了这个概念: enter link description here

另外,我想补充说,'!'通常会识别所谓的“爆炸方法”。这些方法最终会改变它们被调用的变量的状态。

此链接涉及爆炸方法,实际上有一个与您描述的问题非常相似的示例: enter link description here

希望这有帮助