Werte finden

kerstel

Erfahrenes Mitglied
Hallo,

ich habe folgenden Code:

Dim Entries As New List(Of String())
Dim Enc As Encoding = Encoding.UTF8
Using TFP As New Microsoft.VisualBasic.FileIO.TextFieldParser(pCSVFile, Enc)
TFP.HasFieldsEnclosedInQuotes = True
TFP.Delimiters = New String() {";"}
Do
Entries.Add(TFP.ReadFields)
Loop Until TFP.EndOfData
End Using


Wie kann ich nun bestimmte Werte finden?

Gruß
Kerstel
 
Du kannst alle Methoden benutzen, mit denen man Aufzählungen eben durchsuchen, filtern, abfragen kann. Je nachdem, welche Version von VB.Net du verwendest, hast du die Mäglichkeit, Sachen schnell mit Hilfe vom Lambda-Ausdrücken bzw. LINQ-Queries herauszufiltern. Ansonsten ist For Each natürlich ideal.

Zum Beispiel willst du die erste Zeile in der Datei finden, die das Wort "echt" beinhaltet:

Code:
        For Each z In Entries.Find(Function(zeile) zeile.Contains("echt"))
            Console.WriteLine(z)
        Next
 
wie muss ich "zeile" deklarieren? Oder wenn ich in der Zeile nur im ersten Feld suchen möchte?
 
Anscheinend hast du dich damit noch nie auseinandergesetzt. Du deklarierst "zeile" gar nicht. Der Code ist genau so lauffähig, wie ich ihn dir gegeben habe.
Wenn du nur die erste Spalte durchsuchen willst, dann geht das so (etwas unvorteilhaft ist die Tatsache, dass das Teil als List(Of String()) vorliegt, und nicht als List(Of List(Of String))):

Code:
        For Each zeile In Entries.FindAll(Function(z) z(0) = "Also")
            For Each e In zeile
                Console.WriteLine(e)
            Next
        Next

Auch dieser Code funktioniert so. Such mal bei google nach "lambda vb.net". Dann findest du massenweise Seiten, die dir die Funktionsweise dieser Ausdrücke erklären.
 
Dann benutzt du nicht VB.Net 9.0, sondern eine ältere Version. Schau mal bei MS nach der Visual Basic Express Edition 2008. Dann kriegst alle Tools zum Schreiben von .Net 3.5-Anwendungen. Das .Net 3.5 brauchst du für meine Beispiele.
Ansonsten müsstest du halt mit For Each eine Funktion zum Durchsuchen bauen:

Code:
    Function Suchen(ByVal Inhalt As List(Of String()), ByVal zusuchen As String) As List(Of String())
        Dim l As New List(Of String())

        For Each eintrag In Inhalt
            For Each spalte In eintrag
                If spalte = zusuchen Then l.Add(eintrag)
            Next
        Next

        Return l
    End Function

und dann diese entsprechend benutzen:

Code:
        For Each e In Suchen(Entries, "echt")
            For Each e1 In e
                Console.WriteLine(e1)
            Next
        Next
 

Neue Beiträge

Zurück