2017-10-06 60 views
0

我試圖將數據從textfile1複製到新的文本文件(textfile2)。但我希望排除一個特定的行。我找到了一種方法來獲取我想要排除的數據所在的行。將行復制到新文件中,除了從c中的文本文件中的特定行#

我在這裏做的是,我正在檢查「testfile.txt」是否包含用戶從textbox1輸入的字符串。如果文件包含所述輸入,則它將檢查在「textfile1」中是否也有相同的輸入。

string old = @"textfile1.txt"; 
string new = @"textfile2.txt"; 
string test = @"testfile.txt"; 

string[] line = File.ReadAllLines(test); 
for (int i = 0; i < line.Length; i++) 
{ 
    if (line[i].Contains(textbox1.Text)) 
    { 
     string fileData = File.ReadAllText(path); 
     for (int n = 0; n < line.Length; n++) 
     { 
      if (line[n].Contains(textbox1.Text)) 
      { 
       n++; //gets line number 

       //other code 
      } 
     } 
    } 
} 

現在我想要做的就是複製textfile1中的所有內容,但輸入的數據被找到的行除外。

樣本數據

textfile1.txt(ID,項目,價格)

0001,蘋果,5

0002,香蕉,3

0003,芒果,6

用戶輸入0002在TextBox1中

應該OUTPUT

textfile2.txt

0001,蘋果,5

0003,芒果,6

」爲什麼不直接從文件中刪除該行?「好吧,我嘗試過,但是我有麻煩,所以我嘗試這樣做。

我一直在嘗試各種東西,但我似乎無法做任何事情工作:(任何建議?任何形式的幫助將不勝感激!

回答

1

你有太多的循環,你應該能夠做到這一點的一個:

string oldFile = @"textfile1.txt"; 
string newFile = @"textfile2.txt"; 
string test = @"testfile.txt"; 

string[] lines = File.ReadAllLines(oldFile); 

using (StreamWriter w = File.AppendText(newFile)) 
{ 
    foreach(var line in lines) { 
     if (!line.Contains(textbox1.Text)) 
     { 
      w.WriteLine(line); 
     } 
    } 
} 

或者,你也可以使用LINQ來過濾掉不想要的線,然後將其背出一次全部寫:

var newLines = File.ReadLines(oldFile).Where(l => !l.contains(textbox1.Text)); 
File.WriteAllLines(newFile, newLines); 
+0

準確我需要感謝你! – nik

+1

對不起!我以爲我已經做到了。完成了! :) 再次感謝! – nik

相關問題