如何从txt文件中获取C#中两行之间的多行

本文关键字:两行 之间 txt 文件 获取 | 更新日期: 2023-09-27 18:01:39

大家好,我有一个日志文件,其中每个异常都像一样分开

-------------------------------------------------------------------------------------------------------------------------演示:::24-0A-64-C7-E5-57::::2015年7月8日下午6:54:37:::应用程序信息:DemoApp,版本=1.3.1.1,文化=中性,PublicKeyToken=null错误消息:拒绝访问路径"C:''ProgramData''Temp.txt"。文件名第95行c: 函数中的''Users''user''stopdesk''PC_CleanerDemo''App_Code''Global.cs名称更新XML------------------------------------------------------------------------------------------------------------------------------演示:::0C-84-DC-1C-E8-23:::2015年7月8日11:01:44 PM:::应用程序信息:DemoApp,版本=1.3.1.1,文化=中性,PublicKeyToken=null错误消息:操作已超时。在文件名中的第189行c: 函数中的''Users''user''stopdesk''PC_CleanerDemo''App_Code''Global.cs名称下载文件。

在上面给定的行中,每个异常现在都用"-"字符分隔,因为日志现在有行数,所以我想在不同的.txt文件中放置不同类型的异常。我想要C#中的解决方案。如果有人能帮忙,我将感谢他。

如何从txt文件中获取C#中两行之间的多行

取决于日志格式。如果你在每个分隔符中都有固定的和相等的"-",那么做一些类似的事情:

var sep = "------------------------------------------------------------------------------------------------------------------------------";
var logArray = LogText.Split(new string[] { sep  }, StringSplitOptions.None);

并将logArray的每个元素保存在不同的文件中。

如果您在分隔符中有不同的"-"号,并且这些分隔符不在日志文本中,则执行以下操作:

while (logText.Contains("--"))
  logText = logText.Replace("--","-");
var logArray= logText.Split('-');

并将logArray的每个元素保存在不同的文件中或使用正则表达式。请更正VS中的语法。在记事本中书写,所以不确定粘贴是否能完美工作。

您也可以使用Regex.Split

string logText = @"-------------------------------------------------------------------------------------------------------------------------
Demo:::: 24-0A-64-C7-E5-57 :::: 7/8/2015 6:54:37 PM :::: Application Info: DemoApp, Version=1.3.1.1, Culture=neutral, PublicKeyToken=null Error Message: Access to the path 'C:'ProgramData'Temp.txt' is denied. at Line Number 95 in File Name c:'Users'user'desktop'PC_CleanerDemo'App_Code'Global.cs in Function Name UpateXML
------------------------------------------------------------------------------------------------------------------------------
Demo:::: 0C-84-DC-1C-E8-23 :::: 7/8/2015 11:01:44 PM :::: Application Info: DemoApp, Version=1.3.1.1, Culture=neutral, PublicKeyToken=null Error Message: The operation has timed out. at Line Number 189 in File Name c:'Users'user'desktop'PC_CleanerDemo'App_Code'Global.cs in Function Name DownloadFile.";
            string patten = @"'s*-{50,}'s*";
            foreach (var str in Regex.Split(logText, patten))
            {
                if (str.Length > 0)
                {
                    Console.WriteLine("***************************");
                    Console.WriteLine(str);
                }
            }