我正在尝试将行从一个文本文件复制到另一个文本文件中,其中包含一个关键项(例如:“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开始。 我该怎么做?
答案 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);