2012-11-07 81 views
18

我想用另一个字符串替换字符串的一部分。为了更准确 我C:\Users\Desktop\Project\bin\DebugC#字符串替换不起作用

,我试图用\Resources\People

我曾尝试以下,以取代\bin\Debug

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

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

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

+3

“它不起作用”是你真的不应该有任何问题。什么不行?它有什么作用?它不应该做什么?有没有错误,如果是的话,它们是什么? – Servy

+1

不工作意味着不做它应该做的事,用另一个字符串替换字符串。这是一个问答式问题。我刚刚发现了答案,并创建了这个问答风格问题 –

+1

尽管可以自己回答问题,但问题仍然会保持相同的标准。如果单独提出这个问题,这将是一个质量不高的问题。你的回答没有(也不能)影响。正如我所说的,“这行不通”意味着什么。你需要说明你期望它做什么,或者希望它做什么,以及它实际上做了什么。在这种情况下,“不起作用”意味着“路径”没有改变;它包含原始字符串。它没有错误,它不会将字符串更改为除期望输出以外的内容,并且问题不是有条件的。 – Servy

回答

50

问题是字符串是不可变的。方法replace,substring等不会改变字符串本身。他们创建一个新的字符串并将其替换。因此,对于上面的代码是正确的应该是

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

或者只是

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

如果不需要另一个变量

编辑 这个答案也提醒人们字符串不可改变的。您对它们所做的任何更改实际上都会创建一个新字符串。因此请记住所有事情(包括内存管理)

+5

或者只是'path = path.Replace(“\\ bin \\ Debug”,“\\ Resource \\ People \\ VisitingFaculty.txt”);'if another变量不是必需的。 – kprobst

+0

立即添加它:D我首先使用了一个不同的变量,因此它显示它实际上是一个返回的字符串,但我会将该部分和 –

+2

上调了问题和答案,因为这解决了我遇到的问题。我不认为基于这个问题的反对票是公平的,并且“string.replace C#不工作”的搜索把我带到了这里。 –

9

path.Replace方法实际上会返回string。你应该做到以下几点:

path = path.Replace("firstString", "secondString"); 
+0

这是一个问答式问题。我自己回答 –

+0

大声笑,那么你去。 – PaulG

+4

@macrian而这并不意味着其他人无法回答。如果其他人可以提供他们认为比自己更好的答案,则他们有权提供额外的答案。这是SO目标的一部分;每个人都有能力做出回应,并以最佳答案(无论作者)的投票结果倾向于浮出顶部。 – Servy

6
String.Replace(string,string) returns string. 

所以,保存一些字符串变量的新路径。

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