一尘不染

C#字符串替换实际上并不替换字符串中的值

c#

这个问题已经在这里有了答案

string.Replace(或其他字符串修改)不起作用 (4个答案)

2年前关闭。

我正在尝试用另一个字符串替换字符串的一部分。更确切地说,我有 C:\Users\Desktop\Project\bin\Debug

我正在尝试\bin\Debug\Resources\People

我尝试了以下方法:

  1. path.Replace(@"\bin\Debug", @"\Resource\People\VisitingFaculty.txt");

  2. path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");

上面的两个似乎都不起作用,因为字符串保持不变并且什么也没有替换。难道我做错了什么?


阅读 234

收藏
2020-05-19

共1个答案

一尘不染

问题是字符串是不可变的。方法replace,substring等不会更改字符串本身。他们创建一个新字符串并替换它。因此,上述代码正确无误

path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");

要不就

path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");

如果不需要另一个变量

这个答案也提醒人们字符串是不可变的。您对它们所做的任何更改实际上都会创建一个新字符串。因此,请记住涉及字符串的所有内容,包括内存管理。如文档中说明这里

字符串对象是不可变的:创建后无法更改。所有似乎修改字符串的String方法和C#运算符实际上都会在新的字符串对象中返回结果

2020-05-19