C # Как пропустить строки в текстовом файле после преобразования текста в массив? - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть программа, которая обрабатывает текстовый файл журнала и разбивает текстовые файлы на токены.

После токенизации текстового файла программа должна иметь возможность пропустить первые 5 строк нового вывода, который содержит

"RipXP v.20081001

Запущен пт 3 декабря 12:50:21 2010 Z

J: \ syscrawl \ реестра \ Config \ System

USBSTOR

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 Запущен пт 3 декабря 12:50:21 2010 Z

J: \ syscrawl \ реестра \ Config \ System USBSTOR ControlSet001 \ Enum \ USBSTOR

CdRom & Ven_SanDisk & Prod_Ultra_Backup & Rev_8.32 [ср. 1 дек. 07:39:09 2010 S / N: 2584820A2890B317 & 1 [ср. 1 дек. 07:39:22 2010] FriendlyName: USB-устройство SanDisk Ultra Backup

CdRom & Ven_WD & Prod_Virtual_CD_070A & Rev_1032 [ср. 1 дек. 07:31:33 2010] S / N: 575836314331304639303339 & 1 [пт 3 декабря, 05:41:48 2010] FriendlyName: USB-устройство WD Virtual CD 070A

Диск и Ven_SanDisk & Prod_Ultra_Backup & Rev_8.32 [ср. 1 дек. 07:39:09 2010] S / N: 2584820A2890B317 и 0 [ср. 1 дек. 07:39:19 2010] FriendlyName: USB-устройство SanDisk Ultra для резервного копирования ParentIdPrefix: 8 & 2f23e350 & 0

Диск и Ven_WD & Prod_My_Passport_070A & Rev_1032 [ср. 1 дек. 07:31:33 2010] S / N: 575836314331304639303339 & 0 [Пт 3 декабря, 05:41:48 2010] FriendlyName: USB-устройство WD My Passport 070A

Другое & Ven_WD & Prod_SES_Device & Rev_1032 [ср. 1 дек. 07:31:33 2010] S / N: 575836314331304639303339 & 2 [пт. 3 декабря 05:41:48 2010]

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

Информация о точке восстановления Описание: Система Checkpoint Тип: Системная контрольная точка Время создания: понедельник, 29 ноября 16:51:52 2010

J: \ syscrawl \ Restore \ RP1 \ snapshot_REGISTRY_MACHINE_SYSTEM

ControlSet001 \ Enum \ USBStor не найден.

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

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

оооо, я думаю, вы хотите получить строку из оригинала

String.Replace является лучшим решением здесь

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

изменить еще раз

извините, я действительно не понимаю вопроса. но пропустить первые 5 строк

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

надеюсь, что это поможет

0 голосов
/ 11 декабря 2010

Ответом был Stream Reader, который должен начать читать различные позиции строки перед использованием метода split.Коды: C # Как пропустить количество строк при чтении текстового файла с помощью Stream Reader?

...