Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

string.Replace (or other string modification) not working

Tags:

c#

For the following code, I can't get the string.Replace to work:

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

when I debug and check parameters they have values I expect - i.e. someID.ToString() got "1087163075", and sessionID has "108716308" and someTestString contains "1087163075".

I have no idea why this would not work change someTestString

Complete sample:

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

the result (in someTestString) should be this:

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

but it doesn't change. The string for someTestString remains unchanged after hitting my code.

like image 429
PositiveGuy Avatar asked Dec 22 '09 20:12

PositiveGuy


4 Answers

Strings are immutable. The result of string.Replace is a new string with the replaced value.

You can either store result in new variable:

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

or just reassign to original variable if you just want observe "string updated" behavior:

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

Note that this applies to all other string functions like Remove, Insert, trim and substring variants - all of them return new string as original string can't be modified.

like image 70
womp Avatar answered Jan 01 '23 09:01

womp


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

that should work for you

like image 36
Josh Mein Avatar answered Jan 01 '23 08:01

Josh Mein


strings are immutable, the replace will return a new string so you need something like

string newstring = someTestString.Replace(someID.ToString(), sessionID);
like image 33
Pharabus Avatar answered Jan 01 '23 08:01

Pharabus


You can achieve the desired effect by using

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

As womp said, strings are immutable, which means their values cannot be changed without changing the entire object.

like image 31
Peter Alexander Avatar answered Jan 01 '23 08:01

Peter Alexander