我有大约2000行的日志文件。我已经完成了第一轮格式化。但是,我很难将我的日志格式化为我想要的内容:
当前
line1: 9/13/2011 3:58:05 AM, abef, 1234, ...
line2: 9/14/2011 3:58:05 AM, adef, 1234, ...
line3:
line4: 9/15/2011 3:58:05 AM, bcdef, 134, ...
line5: 3) sdad
line6: azd
line7: [] asdsdee234
line2014: 9/16/2011 3:58:05 AM, abcf, 1234, ...
我想要实现的是清理日志以删除不以日期开头的行。因此需要删除第3,5,6和7行。
通缉结果:
line1: 9/13/2011 3:58:05 AM, abef, 1234, ...
line2: 9/14/2011 3:58:05 AM, adef, 1234, ...
line3: 9/15/2011 3:58:05 AM, bcdef, 134, ...
line2010: 9/16/2011 3:58:05 AM, abcf, 1234, ...
答案 0 :(得分:3)
private static IEnumerable<string> ReadOnlyDateTime(string path)
{
DateTime d;
string input;
using (StreamReader stream = new StreamReader(path))
{
while ((input = stream.ReadLine() != null && DateTime.TryParse(input, out d))
{
yield return input;
}
}
}
或
DateTime d;
IList<string> = File.ReadLines(path)
.Where(line => DateTime.TryParse(line, out d)
.ToList();
然后使用File.WriteAllLines()
将结果转储到磁盘。
答案 1 :(得分:1)
当您在代码中迭代文件的每一行时,您有两个选项来检查日期:
使用regular expressions评估string
。
DateTime.TryParse string
。