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

标签 c# .net string

<分区>

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

以上两个似乎都不起作用,因为字符串保持不变并且没有任何内容被替换。难道我做错了什么?

最佳答案

问题是字符串是不可变的。 replace、substring 等方法不会更改字符串本身。他们创建一个新字符串并替换它。所以要使上面的代码正确,应该是

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

或者只是

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

如果不需要另一个变量。

这个答案也提醒我们字符串是不可变的。您对它们所做的任何更改实际上都会创建一个新字符串。因此,请记住涉及字符串的所有内容,包括内存管理。 如文档中所述 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

关于C# 字符串替换实际上并不替换字符串中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13277667/

相关文章:

java - java中两边带通配符的双向字符串匹配

c# - 类型参数到变量

c# - 如何在长名称的文件夹中创建文件。 (避免 PathTooLongException)

c# - 何时/如何注销 RegisteredWaitHandle

c# - 观察对象状态

c - 如何修复 C 中的自定义 insertString 函数

string - 在VBA函数中返回带有上标字符的字符串

c# - finally block 的隐藏功能?

c# - Monogame - 如何使 if 语句循环?

.net - 寻找 GO 的 CCTray 等效项