[GELÖST]Zeile in List(Of String) durch .contains raussuchen und in eine Variable speichern

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Sekki.

    [GELÖST]Zeile in List(Of String) durch .contains raussuchen und in eine Variable speichern

    Guten Tag,

    ich habe ein kleines Problem. Ich arbeite zurzeit viel mit ListBoxen und allgemein List Strings um ein wenig mehr zu lernen usw. Ich habe bereits vieles gelernt, doch hänge immer wieder an Problemen fest, die im Kopf zwar einfach gelöst sind, doch in der Praxis zu Fehlern führen.

    Ich habe eine List erstellt:

    VB.NET-Quellcode

    1. Public Class Itemproto
    2. Dim TxtFileName As String
    3. Private dtItems As DataTable
    4. Private dtItems2 As DataTable
    5. Dim Werte As List(Of String) = File.ReadAllLines("Werte.txt").ToList()


    Bis hierher funktioniert alles einwandfrei. Ich kann mit z.B "Werte(0)" mir die erste Zeile der List ausgeben lassen. Nun möchte ich jedoch in dieser List nach einer bestimmten Zeile suchen indem ich nur eine Zahl kenne, mit der die Zeile beginnt. Und zwar die Zeile, die (.contains(TextBox1.text)) <-- enthält. Diese Zeile soll dann komplett in die Variable "wertFound" geschoben werden.

    Nun habe ich mich natürlich ein wenig damit selbst beschäftigt und viel viel im Internet gesucht. Gefunden habe ich zwar vieles, doch irgendwie nichts verstanden. Ich habe es mit folgendem Code in einem Button versucht:

    VB.NET-Quellcode

    1. If Werte.Contains(TextBox1.text) Then
    2. MsgBox(Werte)
    3. End If


    Des hat leider nicht funktioniert. Es gibt keine Fehlermeldung, nur wird mir nichts angezeigt.

    Nach einer Zeit habe ich alles nur in einen Button zusammengefasst, damit der Überblick einfacher ist:

    VB.NET-Quellcode

    1. Dim Werte As List(Of String) = File.ReadAllLines("Werte.txt").ToList()
    2. If Werte.Contains(TextBox1.Text) Then
    3. Msgbox(Werte)
    4. Else
    5. MsgBox("Nope..")
    6. End If


    Ausgegeben wird mir "Nope..".

    Verstehe ich hier etwas komplett falsch?

    Edit://
    Ich bin nun einen Schritt weiter!

    VB.NET-Quellcode

    1. ​Dim TempString() As String
    2. Dim Zaehler As Integer = 0
    3. TempString = System.IO.File.ReadAllLines("Werte.txt")
    4. While Zaehler <= TempString.Length - 1
    5. If TempString(Zaehler).StartsWith(TextBox1.Text) Then
    6. MsgBox(TempString(Zaehler))
    7. End If
    8. Zaehler += 1
    9. End While


    Jedoch werden mir ALLE Zeilen angezeigt, die mir z.B 21 anfangen. Kann man auch festlegen, dass die Zahl EXAKT 21 sein muss?
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sekki“ ()

    C#-Quellcode

    1. static void Main(string[] args)
    2. {
    3. List<Item> list = new List<Item>
    4. {
    5. new Item
    6. {
    7. Title = "Titel 1"
    8. },
    9. new Item
    10. {
    11. Title = "Titel 2"
    12. }
    13. };
    14. Console.WriteLine("Suchbegriff eingeben:");
    15. string search = Console.ReadLine();
    16. Item wertFound = list.FirstOrDefault(o => o.Title == search);
    17. Console.WriteLine(wertFound != null ? $"Wert gefunden: {wertFound.Title}" : "Wert nicht vorhanden");
    18. Console.ReadLine();
    19. }
    20. public class Item
    21. {
    22. public string Title { get; set; }
    23. }
    Dateien

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Majomi“ ()

    Gibt ne .Find Methode die, falls was gefunden wurde, den Index des Gefundenen Eintrags zurück gibt.
    msdn.microsoft.com/de-de/library/x0b5b5bc(v=vs.110).aspx

    Hier wurde das Suchen in der List(Of String) behandelt.
    List (Of String).FindIndex einfache Textsuche - sowie Teilsuche
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @Sekki,

    ​der Ansatz von @Majomi scheint mir der Beste zu sein.
    Hab mich früher mit Linq auch schwer getan, versteht man es einmal ist es eine super Waffe in fast allen Lebenslagen.

    VB.NET-Quellcode

    1. ​Dim meineListe As New List(Of String)()
    2. meineListe.Add("test1")
    3. meineListe.Add("test2")
    4. Dim ergebnis As String = meineListe.FirstOrDefault(Function(x) x = "test2")


    Im Kopf des Dokuments Linq nicht vergessen.

    VB.NET-Quellcode

    1. ​Imports System.Linq


    Gruss

    mikeb69

    Sekki schrieb:

    mit der die Zeile beginnt
    Dann solltest Du auch am Anfang jeder Zeile suchen:

    VB.NET-Quellcode

    1. If line.StartsWith("42") Then
    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!
    Ihr seid super Leute, ich habe es endlich geschafft!
    Ich bedanke mich vielmals für euch. Ich hoffe, ihr seid mir nicht böse, dass meine Fragen all zu Basic sind. Ich habe leider mittendrin angefangen, was ich keinem empfehle.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.