2017-05-23 4 views
0

私の.txtファイルに問題があります。 「Kleur」と言うテキストと「Binair」というテキスト以外のテキストは同じです。特定の単語の行をスキップ

その.txtファイル内のすべての行を読み込む必要がありますが、「kleur」という単語を含む行はスキップする必要があります。ここで

は、私のコードのサンプルです:

For Each f In dinfo.GetFiles("*.txt", SearchOption.AllDirectories) 

      Using sr As New StreamReader(f.FullName) 
       Dim findstring = IO.File.ReadAllText(f.FullName) 
       Dim Lookfor As String = "Binair" 

       If findstring.Contains(Lookfor) Then 
End If 

しかし、これはkleurラインをスキップしていないと、コードはまだそれにことを行います。

誰かがそれらの行をスキップするのに役立ち、その行に "binair"という行だけを使用できますか?あなたは、不要な行を飛ばし線でいくつかのロジックラインを適用する場合

+0

"Binair"という単語を含まない行では何をしていますか?不必要な行をスキップする行ごとにいくつかのロジックを適用する場合は、ファイルを行単位で読み込んだり、メモリで読み込んだ後にその行を1つずつ処理します(ファイルのサイズによって異なります)。 – Steve

+0

.txtファイルはスキャナによって自動的に作成されました。また、スキャンしたファイルが保存されている場所を示します。スキャンの「カラー」バージョンと「ビナール」バージョンがあります。したがって、.txtファイルには "Kleur"と "Binair"という行があり、 "Binair"行だけで作業する必要があります。どうして "Kleur"という言葉でその行をスキップしますか? –

答えて

1

、その後、行毎にファイルを読んだり、メモリに読み込んだ後、時間のライン1を処理

(選択は、ファイルのサイズによって異なります)この方法では、IEnumerable拡張を使用します。Whereは、ReadLinesによって返された行(行のIEnumerableを返し、それらをメモリ内にすべてロードしません)です。

For Each f In dinfo.GetFiles("*.txt", SearchOption.AllDirectories) 
    Dim lines = File.ReadLines(f.FullName). 
       Where(Function(x) Not x.Contains("Kleur")) 
    ' lines contains only the lines without the word Kleur 
    For Each l As String In lines 
     ' Process the lines 
    Next 
Next 

しかし、あなたはまた、単一の行を読み取るためのStreamReaderを使用することができ、プロセスは、必要に応じて、次の行のためのループ

Dim line As String = "" 
For Each f In dinfo.GetFiles("*.txt", SearchOption.AllDirectories) 
    Using sr = New StreamReader(f.FullName) 
     While True 
      line = sr.ReadLine 
      If line IsNot Nothing Then 
       If Not line.Contains("Kleur") Then 
        ' process the line 
       End If 
      Else 
       Exit While 
      End If 
     End While 
    End Using 
Next 

最後に、あなたがそこからメモリとプロセスのすべてを読み込むことができます(ファイルのサイズに注意してください)

Dim line As String = "" 
For Each f In dinfo.GetFiles("*.txt", SearchOption.AllDirectories) 
    Dim lines = File.ReadAllLines(f.FullName) 
    For each line in lines 
     if Not line.Contains("Kleur") Then 
     ' process the line 
     End If 
    Next 
Next 
関連する問題