Domanda

Ho un programma che elabora un file di log di testo e tokenizza i file di testo.

Dopo la creazione di token del file di testo, il programma dovrebbe essere in grado di saltare le prime 5 linee della nuova uscita che contiene

"RipXP v.20081001

Lanciato Ven 3 dicembre 2010 12:50:21 Z

J: \ syscrawl \ registro \ config \ system

USBSTOR

ControlSet001 \ Enum \ USBSTOR "

Qualcuno può consigliare sui codici?

I Codici:

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

Un esempio di output:

"RipXP v.20081001 Lanciato Ven 3 dicembre 2010 12:50:21 Z

J: \ syscrawl \ registro \ config \ system USBSTOR ControlSet001 \ Enum \ USBSTOR

& CdRom Ven_SanDisk & Prod_Ultra_Backup & Rev_8.32 [mercoledì 1 dicembre 2010 07:39:09   S / N: 2584820A2890B317 & 1 [mer 1 dic 07:39:22 2010]     FriendlyName: SanDisk Ultra Backup USB Device

& CdRom Ven_WD & Prod_Virtual_CD_070A & Rev_1032 [mercoledì 1 dicembre 07:31:33 2010]   S / N: 575836314331304639303339 & 1 [Ven 3 dicembre 05:41:48 2010]     FriendlyName: WD Virtual Device CD 070A USB

Disco & Ven_SanDisk & Prod_Ultra_Backup & Rev_8.32 [mercoledì 1 dicembre 07:39:09 2010]   S / N: 2584820A2890B317 & 0 [mer 1 dic 07:39:19 2010]     FriendlyName: SanDisk dispositivo USB Ultra Backup     ParentIdPrefix: 8 & 2f23e350 & 0

Disco & Ven_WD & Prod_My_Passport_070A & Rev_1032 [mercoledì 1 dicembre 07:31:33 2010]   S / N: 575836314331304639303339 & 0 [Ven 3 dicembre 05:41:48 2010]     FriendlyName: WD My Passport 070A USB Device

Non Ven_WD & Prod_SES_Device & Rev_1032 [mercoledì 1 dicembre 07:31:33 2010]   S / N: 575836314331304639303339 & 2 [Ven 3 dicembre 05:41:48 2010]

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

punto di ripristino Info Descrizione: Sistema di Checkpoint Tipo: System Checkpoint Ora di creazione: Lun 29 Nov 2010 16:51:52

J: \ syscrawl \ Restore \ RP1 \ snapshot_REGISTRY_MACHINE_SYSTEM

ControlSet001 \ Enum \ USBSTOR non trovato.

=============================================== ============= "

È stato utile?

Soluzione 2

La risposta è stata il lettore di flusso che dovrebbe iniziare a leggere la posizione della linea di vari prima di utilizzare il metodo split. I codici: C # Come skip numero di linee durante la lettura di file di testo utilizzando stream Reader?

Altri suggerimenti

ooooh penso u vuole stringa concat da originale

String.Replace è la soluzione migliore qui

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

modifica ancora una volta

mi dispiace, ho davvero capito Non la questione. ma prima di saltare 5 linee

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

speranza che l'aiuto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top