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

发布于 2024-09-14 11:00:58 字数 555 浏览 4 评论 0原文

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

======2010年8月4日上午10:20:45================================ ===========

处理捐赠

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

向服务器发送信息

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

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

示例:第一个记录条目是

======2010年8月4日上午10:20:45================================ ===================

处理捐赠

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

I have logs stored in a txt file in the following format.

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

Processing Donation

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

Sending information to server

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

I need to parse these lines into a list where the information betweeen "====" lines is counted as one record to display on web page using paging in ASP.NET MVC.

Example: The first record entry would be

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

Processing Donation

I had no luck so far. How can I do it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

那支青花 2024-09-21 11:00:58

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

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

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

Whilst reading in the file could you do a check to see if the line ends with =====

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

It's a bit verbose but might give you some ideas

巾帼英雄 2024-09-21 11:00:58

所以...忽略我其他答案中的详细代码。相反,使用这两行奇迹:

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

我总是忘记正则表达式。

So... Ignore the verbose code in my other answer. Instead use this two line wonder:

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

I always forget about regular expressions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文