2011-08-25 63 views
1

我試圖將行從一個文本文件複製到另一個包含關鍵項目的行(例如:「2011」)。以下是我的源文本中存在的行。需要根據關鍵項目將文本行從一個文本複製到另一個文本

PensonReport:1/11/2010 11:14:21 AM,索引和長度必須引用字符串中的位置。 參數名稱:長度,分ProcessDateHeader_BeforePrint,ReportRequestID:24614361,DALBATCHDEV01

的ReportRequest:2011/8/16上午10時02分26秒,過程或函數 'prcEXT602' 預計參數 '@CorrespondentOfficeID',但未提供。 ,Sub ExecuteStoredProc,ReportRequestID:49474706,DALBATCHDEV01

我的代碼的問題是,它無法識別EOL並正在打印整個它。 注意:每個新行從字符串ReportRequest開始。 我該怎麼做?

+1

你如何試圖 「找出EOL」?你正在使用'File.ReadAllLines'方法嗎?請張貼一些代碼.. –

回答

0

如果每一行使用「的ReportRequest」開始使用

string[] splits = mybigstring.Split("ReportRequest"); 

如果這是你問什麼?

2

您將需要從StreamReader開始,並打開您的第一個文件。

然後使用StreamWriter將信息寫出。

接下來將一個while循環與streamwriter一起看看每行,然後你應該可以使用一個。

我的C#語法可能會關閉留下評論,如果我真的有事情請。

string line; 
using (StreamReader reader = new StreamReader("file.txt")) 
using (StreamWriter writer = new StreamWriter("newfile.txt")) 
//Use a while loop that reads each line until there are none left 
while ((line = reader.ReadLine()) != null 
{ 
     line = reader.ReadLine(); 
     if (line.contains("your string here")) 
     then writer.WriteLine(); 
} 

編輯:添加代碼,以便更好地回答問題

 string line; 
     String Report = "ReportRequest"; 
     using (StreamReader reader = new StreamReader("file.txt"))   
     using (StreamWriter writer = new StreamWriter("newfile.txt")) 


      while (reader.ReadLine() != null)     
      { 
       if (reader.ReadLine().StartsWith(Report)) 
       { 
        //writes/starts a new line beginning with ReportRequest 
        writer.WriteLine(line); 
       } 
       else { 
        //appends info to same line (beginning with a space) 
        writer.Write(" " + line); 
       }      
       } 
+0

我做了完全一樣的事情。但我的問題是,它必須從ReportRequest開始,直到達到另一個ReportRequest。因爲字符串ReportRequest是每個新行的起點。希望我沒有把你搞糊塗。:P – Yashaswini

+0

@Yashaswini你說你問題中的每個塊都是行嗎?我一定有點困惑。那麼每個實際的行不會以ReportRequest開頭?所以實際上每4或5行是一行? – sealz

+0

也可能有一個if(line.startswith(「Report」))方法。試試嗎? – sealz

0

Maeby嘗試使用這樣的:

string[] lines = File.ReadAllLines("oldFile.txt") 
    .Where(s => s.Contains("your_text")).ToArray(); 
File.WriteAllLines("newFile", lines); 
相關問題