string.Replace
工作: ,而someID.ToString()
包含“ 108716308”,而sessionID
包含“ 1087163075”。我不知道为什么这不起作用。 />
someTestString.Replace(someID.ToString(), sessionID);
结果(在
someTestString
中)应为:string someTestString =
"<a href='myfoldert/108716305-1.jpg' target='_blank'>108716305-1.jpg</a>"
someTestString.Replace("108716305", "NewId42");
,但不会改变。击中我的代码后,
someTestString
的字符串保持不变。#1 楼
字符串是不可变的。string.Replace
的结果是带有替换值的新字符串。 您可以将结果存储在新变量中:
var newString = someTestString.Replace(someID.ToString(), sessionID);
,或者如果您只想观察“字符串更新”行为,则只需重新分配给原始变量:
someTestString = someTestString.Replace(someID.ToString(), sessionID);
请注意,这适用于所有其他
string
函数,例如Remove
,Insert
,trim和substring变体-它们都将返回新字符串,因为原始字符串不能已修改。评论
所以看起来您不能只是将其设置为自身:someTestString = someTestString.Replace(someID.ToString(),sessionID);
–PositiveGuy
09年12月22日在20:45
好吧,我想我需要开始更多地研究正则表达式...对于一个没有太多接触过的新手来说,这是一个痛苦。...因为这只是同性恋,而正则表达式是下一个最佳选择。
–PositiveGuy
09年12月22日在20:45
您确定论点正确吗?您说someID是108716307,但是someTestString的值是108716305 ...,因此最后一位是不同的,因此不会匹配。
– womp
09-12-22在20:48
命名不好。麻烦的是,任何其他名称都会更长且笨拙。 (GetWithReplacement?GetAfterReplacing?ReplaceAndReturn?)
–瑞安·伦迪(Ryan Lundy)
09年12月22日在21:09
“所以看起来您不能只是将其设置为自身而已”-是的,您可以。
– Alex
09-12-22在21:27
#2 楼
someTestString = someTestString.Replace(someID.ToString(), sessionID);
应该为您工作的
#3 楼
字符串是不可变的,替换将返回新的字符串,因此您需要类似string newstring = someTestString.Replace(someID.ToString(), sessionID);
#4 楼
您可以通过使用someTestString = someTestString.Replace(someID.ToString(), sessionID);
达到预期的效果,如womp所说,字符串是不可变的,这意味着它们的值不能在不更改整个对象的情况下进行更改。
评论
经典.net编码错误。我想每个人都已经匆忙地碰了一遍了:-)))如此普遍以至于CoffeeAddict一个月后犯了同样的错误:) stackoverflow.com/questions/1558024/string-replace-not-working
请注意,对System.String类型的每个操作都存在完全相同的问题,您希望更改该字符串-它们不会更改字符串-它们会返回具有更改的新字符串。