C# string replace does not actually replace the value in the string [duplicate]
I am trying to replace a part of string with another another string. To be more precise
I have C:\Users\Desktop\Project\bin\Debug
and I am trying to replace \bin\Debug
with \Resources\People
I have tried the following:
path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");
path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
None of the above two seems to work, as the string remains the same and nothing is replaced. Am I doing something wrong?
The problem is that strings are immutable. The methods replace, substring, etc. do not change the string itself. They create a new string and replace it. So for the above code to be correct, it should be
path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
Or just
path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
if another variable is not needed.
This answer is also a reminder that strings are immutable. Any change you make to them will in fact create a new string. So keep that in mind with everything that involves strings, including memory management. As stated in the documentation here.
String objects are immutable: they cannot be changed after they have been created. All of the String methods and C# operators that appear to modify a string actually return the results in a new string object
The path.Replace
method actually returns a string
. You should do the following:
path = path.Replace("firstString", "secondString");
String.Replace(string,string) returns string.
So, save the new path in some string variable.
path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");