Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个字符串:
str="D\\projects\\myown\\java"
我将此字符串分配给两个变量,例如:
str1=str str2=str
在我做了以下操作后:
idgb1=str1.gsub!("\\","_")
我得到str1了D_projects_myown_java和str2是一样的。为什么会这样?我不想str2改变它的价值。
str1
D_projects_myown_java
str2
str1并且str2只是对 的引用str,字符串不会复制到这些变量中。并String#gsub!更新字符串。
str
String#gsub!
如果你想保持str2完整,你需要这样做:
str2 = str.dup
或者
str2 = str.clone
此外,如果您使用String#gsub而不是String#gsub!,str并且str2不会更改。
String#gsub
有关更多信息,您可能还想阅读浅拷贝和深拷贝,这里有一个解释这个概念的维基百科链接: 在此处输入链接描述
另外,我想补充一下,'!通常标识所谓的“爆炸方法”。这些方法最终会改变它们被调用的变量的状态。
此链接涉及 bang 方法,实际上有一个与您描述的问题非常相似的示例: 在此处输入链接描述
希望这可以帮助