【问题标题】:Display log file information on a Web page with ASP.NET MVC paging使用 ASP.NET MVC 分页在网页上显示日志文件信息
【发布时间】:2026-02-16 17:00:01
【问题描述】:

我将日志存储在以下格式的 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============================== ====================

处理捐赠

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

【问题讨论】:

    标签: c# text-parsing


    【解决方案1】:

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

    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);
      }
    }
    

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

    【讨论】:

      【解决方案2】:

      所以...忽略我其他答案中的详细代码。而是使用这两条线奇迹:

      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"]});
      

      我总是忘记正则表达式。

      【讨论】: