需要根据关键项将行从一个文本复制到另一个文本

时间:2011-08-25 10:39:30

标签: c#

我正在尝试将行从一个文本文件复制到另一个文本文件中,其中包含一个关键项(例如:“2011”)。以下是我的源文本中的行。

  

PensonReport:2010年1月11日上午11:14:21,索引和长度必须引用字符串中的位置。   参数名称:length,Sub ProcessDateHeader_BeforePrint,ReportRequestID:24614361,DALBATCHDEV01

     

ReportRequest:8/16/2011 10:02:26 AM,过程或函数'prcEXT602'需要参数'@CorrespondentOfficeID',它未提供。,Sub ExecuteStoredProc,ReportRequestID:49474706,DALBATCHDEV01

我的代码存在的问题是它无法识别EOL并正在打印整个EOL。 注意:每个新行都从字符串ReportRequest开始。 我该怎么做?

3 个答案:

答案 0 :(得分:2)

您需要从StreamReader开始,并打开您的第一个文件。

然后使用StreamWriter写出信息。

接下来,与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);
                }                       
                }

答案 1 :(得分:0)

如果每行以“ReportRequest”开头,请使用

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

如果这是你要求的?

答案 2 :(得分:0)

Maeby尝试使用这样的东西:

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