2012-11-16 59 views
-1

这是我应该返回解析文档的方法。字符串替换不能正常工作

public string GetParsedDocument(string Document) 
{ 
    Document.Replace("{{tag}}", ParseMarkup(Tag.Text)); 
    return Document 
} 

基本上我解析文档,并将其写入这样的文件:当我打开文件,然而

System.IO.File.WriteAllText(SaveDialog.FileName, GetParsedDocument(TestProgram.Properties.Resources.Document)); 

,我改变非在那里。这是怎么回事?我已经试过使字符串逐字逐句,并且已经测试过,看它是否是其他任何不工作的组件;但事实并非如此。字符串替换不起作用。或者它没有正确地返回。有任何想法吗?

+0

请不要使用大写字母作为变量的第一个字符! –

+1

在使用这个非常常用的方法怀疑bug之前,您是否阅读过String.Replace的文档? (特别是高亮的注释:“此方法不会修改当前实例的值,而是返回一个新字符串,其中newValue的所有匹配项均被newValue替换。”) –

+0

@JonSkeet不需要,IntelliSense将会告诉你已经。你可以通过返回值类型来判断。 –

回答

4

字符串是不可变的,所以它的所有方法都会返回新的字符串。你应该是这样的:

string parsedDocument = Document.Replace("{{tag}}", ParseMarkup(Tag.Text)); 
return parsedDocument; 
4

Replace不就地工作,但就是返回字符串改变

return Document.Replace("{{tag}}", ParseMarkup(Tag.Text)); 

现在你得到更改版本的功能。