首页 >后端开发 >C++ >为什么不修改.NET中的原始字符串?

为什么不修改.NET中的原始字符串?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-30 07:51:09379浏览

Why Doesn't `string.Replace` Modify the Original String in .NET?

.NET字符串操作详解:为什么string.Replace无法修改原字符串?

问题:Replace方法无法修改字符串

以下代码片段中,string.Replace方法似乎无法修改字符串:

<code class="language-csharp">string someTestString = "<a href=\"myfoldert/108716305-1.jpg\" target=\"_blank\">108716305-1.jpg</a>";
someTestString.Replace("108716305", "NewId42");</code>

即使参数有效,字符串仍然保持不变。

解释

.NET中的字符串是不可变的,这意味着它们的内容无法直接修改。调用string.Replace时,它会创建一个包含替换值的新字符串,而不是修改原始字符串。

解决方法

要更新字符串,您需要:

  1. string.Replace的结果存储在一个新的变量中:
<code class="language-csharp">var newString = someTestString.Replace(someID.ToString(), sessionID);</code>
  1. 如果你想观察“字符串已更新”的行为,重新赋值原始变量:
<code class="language-csharp">someTestString = someTestString.Replace(someID.ToString(), sessionID);</code>

需要注意的是,这适用于.NET中的所有字符串操作函数,例如RemoveInsertTrimSubstring变体,因为它们都返回一个新字符串,而不是操作原始字符串。

以上是为什么不修改.NET中的原始字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn