string.Replace(或其他字符串修改)不起作用

Pos*_*Guy 12 c#

对于以下代码,我无法开始string.Replace工作:

someTestString.Replace(someID.ToString(), sessionID);
Run Code Online (Sandbox Code Playgroud)

当我调试并检查参数时,它们具有我期望的值 - 即someID.ToString()得到"1087163075",并且sessionID具有"108716308"并someTestString包含"1087163075".

我不知道为什么这不会改变 someTestString

完整样本:

string someTestString = 
      "<a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a>"
someTestString.Replace("108716305", "NewId42");  
Run Code Online (Sandbox Code Playgroud)

结果(in someTestString)应该是这样的:

"<a href='myfoldert/NewId42-1.jpg' target='_blank'>NewId42-1.jpg</a>" 
Run Code Online (Sandbox Code Playgroud)

但它没有改变.someTestString在命中我的代码后,字符串保持不变.

wom*_*omp 46

字符串是不可变的.结果string.Replace是带有替换值的新字符串.

您可以将结果存储在新变量中:

var newString = someTestString.Replace(someID.ToString(), sessionID);
Run Code Online (Sandbox Code Playgroud)

或者只是想要观察"字符串更新"行为,只需重新分配给原始变量:

someTestString = someTestString.Replace(someID.ToString(), sessionID);
Run Code Online (Sandbox Code Playgroud)

请注意,这适用于所有其他string功能,如Remove,Insert,修剪和子变种-它们都返回新的字符串作为原始字符串不能被修改.

  • "所以看起来你不能做到这一点并把它设置为自己" - 是的,你可以. (4认同)