gpt4 book ai didi

linq - 使用 Linq 对日志文件行进行分组

转载 作者:行者123 更新时间:2023-12-01 11:04:34 25 4
gpt4 key购买 nike

我有一个来自日志文件的字符串数组,格式如下:

var lines = new []
{
"--------",
"TimeStamp: 12:45",
"Message: Message #1",
"--------",
"--------",
"TimeStamp: 12:54",
"Message: Message #2",
"--------",
"--------",
"Message: Message #3",
"TimeStamp: 12:55",
"--------"
}

我想使用 LINQ 将每组行(由 "--------" 分隔)分组到一个列表中。基本上,我想要一个 List<List<string>>或类似的,其中每个内部列表包含 4 个字符串 - 2 个分隔符、一个时间戳和一条消息。

我应该补充一点,我希望尽可能通用,因为日志文件格式可能会改变。

这可以做到吗?

最佳答案

这行得通吗?

var result = Enumerable.Range(0, lines.Length / 4)
.Select(l => lines.Skip(l * 4).Take(4).ToList())
.ToList()

编辑:

这看起来有点老套,但我相信它可以清理干净

    IEnumerable<List<String>> GetLogGroups(string[] lines)
{
var list = new List<String>();
foreach (var line in lines)
{
list.Add(line);
if (list.Count(l => l.All(c => c == '-')) == 2)
{
yield return list;
list = new List<string>();
}
}
}

关于linq - 使用 Linq 对日志文件行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com