对于以下代码,我无法让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
的字符串保持不变。
答案 0 :(得分:46)
字符串是不可变的。 string.Replace
的结果是带有替换值的新字符串。
您可以将结果存储在新变量中:
var newString = someTestString.Replace(someID.ToString(), sessionID);
或者如果您只是想观察“字符串更新”行为,只需重新分配给原始变量:
someTestString = someTestString.Replace(someID.ToString(), sessionID);
请注意,这适用于所有其他string
函数,例如Remove
,Insert
,trim和substring变体 - 所有这些函数都返回新字符串,因为原始字符串无法修改。< / p>
答案 1 :(得分:2)
someTestString = someTestString.Replace(someID.ToString(), sessionID);
应该适合你
答案 2 :(得分:1)
字符串是不可变的,替换将返回一个新字符串,因此您需要类似
的字符串string newstring = someTestString.Replace(someID.ToString(), sessionID);
答案 3 :(得分:1)
您可以使用
达到预期的效果someTestString = someTestString.Replace(someID.ToString(), sessionID);
正如womp所说,字符串是不可变的,这意味着在不改变整个对象的情况下不能改变它们的值。