使用ASP.NET MVC分页在Web页面上显示日志文件信息

时间:2010-08-17 00:31:15

标签: c# text-parsing

我将日志存储在txt文件中,格式如下。

  

====== 8/4/2010 10:20:45 AM ============================== ===========

     

处理捐款

     

====== 8/4/2010 10:21:42A M ============================== ===========

     

向服务器发送信息

     

====== 8/4/2010 10:21:43 AM ============================== ===========

我需要将这些行解析为一个列表,其中“====”行之间的信息被计为一个记录,以便在ASP.NET MVC中使用分页显示在网页上。

示例:第一个记录条目是

  

====== 8/4/2010 10:20:45 AM ============================== ===================

     

处理捐款

到目前为止我没有运气。我该怎么办?

2 个答案:

答案 0 :(得分:0)

在阅读文件时,您可以检查该行是否以=====

结尾
var sBuilder = new StringBuilder()
bool lineEnd = false;
var items = new List<string>();
string currentLine = String.Empty
using(var file = new StringReader("log.txt"))
{
  while( (currentLine = file.ReadLine()) != null)
  {
    if(currentLine.EndsWith("===="))
    {
        items.Add(sBuilder.ToString());
        sBuilder.Clear();
    }
    else
        sBuilder.Append(currentLine);
  }
}

它有点冗长,但可能会给你一些想法

答案 1 :(得分:0)

所以...在我的其他答案中忽略冗长的代码。而是使用这两行奇迹:

string texty = "=====........"; //File data
var matches = Regex.Matches(texty, @"={6}(?<Date>.+)={41}\s*(?<Message>.+)");

var results = matches.Cast<Match>().Select(m => new {Date = m.Groups["Date"], Message = m.Groups["Message"]});

我总是忘记正则表达式。