0

我有一个程序可以处理文本日志文件并标记文本文件。

标记文本文件后,程序应该能够跳过新输出的前 5 行,其中包含

"RipXP v.20081001

于 2010 年 12 月 3 日星期五 12:50:21 推出 Z

J:\syscrawl\注册表\配置\系统

USB存储

ControlSet001\Enum\USBStor"

有人可以就代码提供建议吗?

代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;


namespace Testing
{
class Program
{
    static void Main(string[] args)
    {
        TextReader tr = new StreamReader(@"C:\Test\new.txt");

        String SplitBy = "----------------------------------------";

        String fullLog = tr.ReadToEnd();

        String[] sections = fullLog.Split(new string[] { SplitBy }, StringSplitOptions.None);

        foreach (String r in sections)
        {
            Console.WriteLine(r);
            Console.WriteLine("============================================================");
        }
    }
  }
  }

输出样本:

“RipXP v.20081001 于 2010 年 12 月 3 日星期五 12:50:21 发布 Z

J:\syscrawl\registry\config\system USBStor ControlSet001\Enum\USBStor

CdRom&Ven_SanDisk&Prod_Ultra_Backup&Rev_8.32 [2010 年 12 月 1 日星期三 07:39:09 S/N: 2584820A2890B317&1 [2010 年 12 月 1 日星期三 07:39:22] FriendlyName : SanDisk Ultra Backup USB 设备

CdRom&Ven_WD&Prod_Virtual_CD_070A&Rev_1032 [2010 年 12 月 1 日星期三 07:31:33] S/N: 575836314331304639303339&1 [2010 年 12 月 3 日星期五 05:41:48] 友好名称:WD Virtual CD 070A USB 设备

Disk&Ven_SanDisk&Prod_Ultra_Backup&Rev_8.32 [Wed Dec 1 07:39:09 2010] S/N: 2584820A2890B317&0 [Wed Dec 1 07:39:19 2010] FriendlyName : SanDisk Ultra Backup USB Device ParentIdPrefix: 8&2f23e350&0

Disk&Ven_WD&Prod_My_Passport_070A&Rev_1032 [Wed Dec 1 07:31:33 2010] S/N: 575836314331304639303339&0 [Fri Dec 3 05:41:48 2010] FriendlyName : WD My Passport 070A USB Device

Other&Ven_WD&Prod_SES_Device&Rev_1032 [Wed Dec 1 07:31:33 2010] S/N: 575836314331304639303339&2 [Fri Dec 3 05:41:48 2010]

==================================================== ==========

还原点信息描述:系统检查点类型:系统检查点创建时间:2010 年 11 月 29 日星期一 16:51:52

J:\syscrawl\Restore\RP1\snapshot_REGISTRY_MACHINE_SYSTEM

未找到 ControlSet001\Enum\USBStor。

==================================================== ===========

4

2 回答 2

1

ooooh i think u want to concat string from original

String.Replace is best solution here

string data = tr.ReadToEnd();
data.Replace(Environment.NewLine, " ")
.Replace("----------------------------------------", "============================================================");
Console.WriteLine(data);

edit again

sorry, i really dont understand the question. but to skip first 5 lines

string lines = tr.ReadToEnd().Split('\n');
StringBuilder sb = new StringBuilder();
for(int i = 5; i < lines.Length; i++) sb.AppendLine(lines[i]);
string sixthLineToEnd = sb.ToString();

hope it help

于 2010-12-11T18:24:14.077 回答
0

答案是 Stream Reader,它应该在使用 split 方法之前开始读取不同的行位置。代码:C# 如何在使用 Stream Reader 读取文本文件时跳过行数?

于 2010-12-11T19:02:53.213 回答