这个问题已经在这里有了答案 :
string.Replace(或其他字符串修改)不起作用 (4个答案)
2年前关闭。
我正在尝试用另一个字符串替换字符串的一部分。更确切地说,我有 C:\Users\Desktop\Project\bin\Debug
C:\Users\Desktop\Project\bin\Debug
我正在尝试\bin\Debug 用\Resources\People
\bin\Debug
\Resources\People
我尝试了以下方法:
path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");
path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
上面的两个似乎都不起作用,因为字符串保持不变并且什么也没有替换。难道我做错了什么?
问题是字符串是不可变的。方法replace,substring等不会更改字符串本身。他们创建一个新字符串并替换它。因此,上述代码正确无误
path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
要不就
path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");
如果不需要另一个变量
这个答案也提醒人们字符串是不可变的。您对它们所做的任何更改实际上都会创建一个新字符串。因此,请记住涉及字符串的所有内容,包括内存管理。如文档中说明这里
字符串对象是不可变的:创建后无法更改。所有似乎修改字符串的String方法和C#运算符实际上都会在新的字符串对象中返回结果