2012-02-28 47 views
0

我正在寫c#代碼來替換文件中的某些單詞。我寫的2行演示簡單代碼不起作用。沒有錯誤並且Console.WriteLine也正在給出正確的輸出。爲什麼不是string.Replace按我的預期工作?

string strFileContent = File.ReadAllText(@"C:\Users\toshal\Documents\TCS\stop_words.txt"); 
Console.WriteLine("strfilecontent" + strFileContent); 
strFileContent = strFileContent.Replace("actually" , " "); 

字符串「實際」沒有在文件中被替換。 這裏有什麼問題?

+1

這裏有什麼問題?此代碼將在替換之前打印字符串,並且不會將字符串保存迴文件。 – DaveShaw 2012-02-28 11:52:20

+1

你的意思是變量strFileContent在替換調用後沒有改變,因爲在你的例子中你不再使用它了嗎? – 2012-02-28 11:52:48

+1

您需要將'strFileContent'字符串發送回該文件,該內容將在內存中被替換,但不會退出到該文件。 – dougajmcdonald 2012-02-28 11:53:02

回答

5

您正在創建一個替換值的字符串,但不會將該值寫回文件。因此,該文件保持不變。

要修復,添加以下行來寫更改值迴文件:

string path = @"C:\Users\toshal\Documents\TCS\stop_words.txt"; 
string strFileContent = File.ReadAllText(path); 
Console.WriteLine("strfilecontent" + strFileContent); 
strFileContent = strFileContent.Replace("actually" , " "); 
File.WriteAllText(path, strFileContent); 
10

Ofcourse它沒有得到文件中所取代,因爲你只數據,然後改變它。

如果要應用更改,您必須將其寫回文件。

string strFileContent = File.ReadAllText(@"C:\Users\toshal\Documents\TCS\stop_words.txt"); 
Console.WriteLine("strfilecontent" + strFileContent); 
strFileContent = strFileContent.Replace("actually" , " "); 

StreamWriter SW = File.CreateText(@"C:\Users\toshal\Documents\TCS\stop_words.txt"); 
SW.Write(strFileContent); 
SW.Close(); 
相關問題