List (Of String).FindIndex einfache Textsuche - sowie Teilsuche

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Rainman.

    List (Of String).FindIndex einfache Textsuche - sowie Teilsuche

    Hallo!

    Ich google mir einen Ast ab, und komm auf keinen grünen Zweig. Deshalb bitte ich hier nochmal um konkrete Hinweise wie es denn geht.

    List of string.Contains("Text") findet glaube ich nur exakte Einträge. Ich will aber sowas wie Like "*TEXT*", also muss man wohl mit FindIndex arbeiten,
    und eine eigene Function dafür schreiben, die man dann im .FindeIndex(function() as string) angibt ?? oder ??

    Vorallem selbst wenn der text mal exakt zutrifft, habe ich nicht die Indexnummer wo es gefunden wurde!
    Ich raffs leider nicht. Bitte um Hilfe.

    Denn ich will quasi einen Text suchen, und in der Liste kann dieser teilweise vorkommen. Sowie: "0204" suche ich, und die List hat irgendwo einen Eintrag "SMD0204". Diesen Index brauche ich dann, weil ich dann mit dem gefundenem Text weiterarbeiten will...

    Hinti schrieb:

    sowas wie Like
    Nimm Like. Durchrattern musst Du die Liste in jedem Fall.

    VB.NET-Quellcode

    1. Dim ll As New List(Of String)
    2. ll.Add("SMD0204")
    3. ll.Add("SMD0205")
    4. For Each item In ll
    5. If item Like "*0204" Then
    6. MessageBox.Show(item)
    7. End If
    8. Next

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Die FindAll-Erweiterung gibt die auch alle Items retour welche beim Vergleich True ergeben ->

    VB.NET-Quellcode

    1. Dim lst = New List(Of String)() From {"Hallo", "Hallo123", "Test"}
    2. Dim newLst = lst.FindAll(Function(f) f.Contains("Hallo")).ToList()


    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Wenn du den Wert und den Index benötigst, dann bietet sich ein Dictionary an.
    Entweder die Daten gleich im Dictionary vorhalten oder wie im Beispiel unten umladen.
    Die Abfrage des Dictionary mit Filter auf einen Teilstring liefert Paare aus Index und Wert.

    VB.NET-Quellcode

    1. Dim lst = New List(Of String)() From {"Hallo", "Hallo123", "Test"}
    2. Dim i As Integer = 0
    3. Dim dic = New Dictionary(Of Integer, String)
    4. For Each l In lst
    5. dic.Add(i, l)
    6. i += 1
    7. Next
    8. Dim newLst = dic.Where(Function(p) p.Value Like "*llo*").ToList


    *** wie formatiert man Quellcode hier eigentlich? Tabs und Leerzeichen funktionieren wohl eher nicht und führen zu unerwarteten Ergebnissen. Schönen Gruß an den Entwickler.
    An manchen Tagen gibt es zu allem Überfluss auch noch Ärger!

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Rainman“ ()