C # Come saltare righe nel file di testo dopo il testo convertito in array?
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.
=============================================== ============= "
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 ??p>
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