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

时间:2015-07-09 03:11:40

标签: c# file-handling

大家好我有日志文件,其中每个例外都是分开的,如

  

----------------------------------------------- -------------------------------------------------- ------------------------ Demo :::: 24-0A-64-C7-E5-57 :::: 2015/7/8 6 :54:37 PM ::::申请   信息:DemoApp,Version = 1.3.1.1,Culture = neutral,PublicKeyToken = null   错误消息:拒绝访问路径“C:\ ProgramData \ Temp.txt”。   在文件名中的第95行   功能中的c:\ Users \ user \ desktop \ PC_CleanerDemo \ App_Code \ Global.cs   命名UpateXML   -------------------------------------------------- -------------------------------------------------- -------------------------- Demo :::: 0C-84-DC-1C-E8-23 :::: 7/8 / 2015 11:01:44 PM ::::   应用信息:DemoApp,Version = 1.3.1.1,Culture = neutral,   PublicKeyToken = null错误消息:操作已超时。在   文件名中的行号189   功能中的c:\ Users \ user \ desktop \ PC_CleanerDemo \ App_Code \ Global.cs   名称DownloadFile。

在上面给定的行中,每个异常现在由' - '字符分隔,因为日志现在有行数,所以我想在不同的.txt文件中放置不同类型的异常。我想在C#中解决。如果有人可以提供帮助,我会感激他。

2 个答案:

答案 0 :(得分:1)

取决于日志格式。 如果您已经修复并等于' - '然后在每个分隔符中执行以下操作:

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

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

如果你有不同的' - ' - '在分隔符中,除了分隔符之外,它们不在日志文本中,而是执行以下操作:

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

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

答案 1 :(得分:1)

您也可以使用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);
                }
            }