猿问

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

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

我试图用另一个字符串替换字符串的一部分。更确切地说,我有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");

上述两种方法似乎都不起作用,因为字符串保持不变,没有任何东西被替换。我做错什么了吗?


HUH函数
浏览 715回答 3
3回答

杨魅力

问题是字符串是不可变的。方法替换、子字符串等不改变字符串本身。他们创建一个新字符串并替换它。因此,要使上面的代码正确,应该是path1 = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");或者只是path = path.Replace("\\bin\\Debug", "\\Resource\\People\\VisitingFaculty.txt");如果不需要另一个变量这个答案也提醒我们字符串是不可变的。您对它们所做的任何更改实际上都会创建一个新的字符串。因此,请记住所有涉及字符串的内容,包括内存管理。如文件所述这里字符串对象是不可变的:它们在创建之后不能更改。所有看似修改字符串的字符串方法和C#操作符实际上都返回新String对象中的结果
随时随地看视频慕课网APP
我要回答