0

テキストログファイルを処理し、テキストファイルをトークン化するプログラムがあります。

テキストファイルをトークン化した後、プログラムは次の内容を含む新しい出力の最初の5行をスキップできるはずです。

「RipXPv.20081001

2010年12月3日金曜日12:50:21Zに発売

J:\ syscrawl \ Registry \ 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は、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 [Wed Dec 1 07:39:09 2010 S / N:2584820A2890B317&1 [Wed Dec 1 07:39:22 2010] FriendlyName:SanDisk Ultra Backup USB Device

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

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

その他&Ven_WD&Prod_SES_Device&Rev_1032[2010年12月1日水曜日07:31:33]S / N:575836314331304639303339&2[2010年12月3日金曜日05:41:48]

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

復元ポイント情報説明:システムチェックポイントタイプ:システムチェックポイント作成時間:Mon Nov 29 16:51:52 2010

J:\ syscrawl \ Restore \ RP1 \ snapshot_REGISTRY_MACHINE_SYSTEM

ControlSet001 \ Enum\USBStorが見つかりません。

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

4

2 に答える 2

1

ooooh私はあなたがオリジナルから文字列を連結したいと思います

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

お役に立てば幸いです

于 2010-12-11T18:24:14.077 に答える
0

答えは、splitメソッドを使用する前にさまざまな行位置の読み取りを開始する必要があるストリームリーダーでした。コード:C#ストリームリーダーを使用してテキストファイルを読み取るときに行数をスキップするにはどうすればよいですか?

于 2010-12-11T19:02:53.213 に答える