一尘不染

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

c#

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

someTestString.Replace(someID.ToString(), sessionID);

当我调试和检查参数时,它们具有我期望的值-即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");

(中的someTestString)结果应为:

"<a href='myfoldert/NewId42-1.jpg' target='_blank'>NewId42-1.jpg</a>"

但它并没有改变。的字符串someTestString在击中我的代码后保持不变。


阅读 621

收藏
2020-05-19

共1个答案

一尘不染

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

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

var newString = someTestString.Replace(someID.ToString(), sessionID);

或者如果您只想观察“字符串更新”行为,则只需重新分配给原始变量:

someTestString = someTestString.Replace(someID.ToString(), sessionID);

请注意,这适用于所有其他string函数,例如Remove,,Inserttrim和substring变体-
它们都将返回新字符串,因为无法修改原始字符串。

2020-05-19