修改字符串的实例

ѕтƒ*_*ѕтƒ 0 ruby string mutable

我有一个字符串:

str="D\\projects\\myown\\java"
Run Code Online (Sandbox Code Playgroud)

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

str1=str
str2=str
Run Code Online (Sandbox Code Playgroud)

我做了以下操作后:

idgb1=str1.gsub!("\\","_")
Run Code Online (Sandbox Code Playgroud)

我得到str1D_projects_myown_javastr2是一样的.为什么会这样?我不想str2改变它的价值.

Yan*_*hao 5

str1并且str2只是引用str,字符串不会复制到那些变量.并String#gsub!更新字符串.

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

str2 = str.dup
Run Code Online (Sandbox Code Playgroud)

要么

str2 = str.clone
Run Code Online (Sandbox Code Playgroud)

此外,如果你使用String#gsub的不是String#gsub!,strstr2不会改变.