2012-08-07 112 views
0

我有一個文本文件,我在其中添加,更新和刪除數據(聯繫人)。每個聯繫人都在一行中。現在,當我通過我的應用程序刪除聯繫人時,我正在刪除我的文件中的一行(用空字符串替換聯繫人)這導致聯繫人之間出現空行。我不想要這個空行。這是我寫的一段代碼:從文件中刪除空行

private void btn_condel_Click(object sender, EventArgs e) 
    { 
     bufferedListView1.Items.Clear(); 
     string fileContents = File.ReadAllText("C:\\sample.txt"); 
     string replacedContents = fileContents.Replace(txt_editname.Text + "@" + txt_editno.Text,""); 
     File.WriteAllText("C:\\sample.txt", replacedContents); 
     // Rest of the code 

在替換文件中的數據時,需要做些什麼來消除這條空行。

+0

您是否在內存中擁有所有聯繫方式?如果是這樣,我認爲最好在操作結束時重寫所有內容,而不是在每一個操作(添加,刪除,修改)中重寫所有內容 – Steve 2012-08-07 09:56:19

+0

我在列表視圖中顯示聯繫人,這些修改應立即顯示在列表中。所以我不能這樣做,因爲你說 – Cdeez 2012-08-07 10:02:12

回答

2

看起來解決這個問題也只是抓住新的生產線的最簡單的方法:

string replacedContents = fileContents.Replace(
    txt_editname.Text + "@" + txt_editno.Text + System.Environment.NewLine,""); 
+0

你可以使用[''System.Environment.NewLine'](http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx) – 2012-08-07 09:42:28

+0

@PaoloMoretti謝謝,包括它。 – 2012-08-07 09:43:27

0

試試這個,

string fileContents = File.ReadAllText("C:\\sample.txt"); 
    string replacedContents = fileContents.Replace(txt_editname.Text + "@" +  txt_editno.Text,""); 
    File.WriteAllText("C:\\sample.txt", replacedContents.Trim()); 
0

我還沒有嘗試過,但是這個應該工作:將文件讀入字符串數組,將其轉換爲列表(因爲您無法從數組中移除項目),移除該聯繫人並將其餘部分寫回到文件中。如果你解析文本文件(btw:你不能使用XML文件......),那麼它會更好地工作到你自己的聯繫人數據類型。然後你有一個列表,並可以從那裏刪除一個對象。

string[] lines = File.ReadAllLines("C:\\sample.txt"); 
List<string> list = lines.ToList<string>(); 
list.Remove(txt_editname.Text + "@" + txt_editno.Text); 
File.WriteAllLines("C:\\sample.txt", list.ToArray());