Zeile in Datei suchen und einlesen

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Zeile in Datei suchen und einlesen

    Hallo zusammen,

    ich möchte eine Datei nach einem bestimmten "Schlüsselwort" durchsuchen und die dazugehörige Zeile dazu einlesen.

    Beispiel:

    Demodatei

    Var1= Hallo
    Var2= Welt
    Var3 = wie
    Var4= gehts
    Var5= dir?


    Ich möchte nun die Datei nach dem "Schlüsselwort" Vae3 durchsuchen und die dazugehörige Zeile bis zum Ende einlesen, so dass entweder Var3 = wie in der Variable steht, oder (was noch besser wäre) nur das wie.

    Jemand eine Idee, wie sich das umsetzen lässt.

    Grüße!
    Mit File.OpenRead() holst du dir den FileStream, packst den in einen StreamReader und ließt bis StreamReader.EndOfStream in einer While oder Do-While Schleife die einzelnen Zeilen. Via zeile.Contains() kannst du dann die aktuell gelesene Zeile nach deinem Schlüsselwort absuchen und bei einem Treffer dann damit machen was auch immer du möchtest.

    Edit:
    Achja, Using bzw. .Dispose() nicht vergessen.
    Hallo!
    Ideal für sowas wäre, wenn Du JSON oder XML verwendest. Hier werden jeweils Schlüssel/Wert-Paare verwendet und es gibt schon ein Handling dafür.

    In Deinem Fall musst Du jede Zeile einlesen, schauen ob das Schlüsselwort vorhanden ist (entweder per Regex oder mit String.contains()), die Zeile splitten, evtl. Leerzeichen entfernen und aus dem Splitergebnis das letzte Arrayelement verwenden.

    Grüße
    Der Beitrag wurde aus 100% wiederverwendbaren Elektronen erstellt!
    @HeizungAuf5 Gibt es in dieser Datei noch Header odr etwas ähnliches?
    Dann könnte es möglicherweise ein INI-Format sein.
    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!
    Dass IO.File.ReadAllLines noch nicht gefallen ist ...
    Für den (unwahrscheinlichen) Fall, dass die Demodatei repräsentativ wäre:

    VB.NET-Quellcode

    1. Dim FileLines = IO.File.ReadAllLines(Dateipfad)
    2. For Each Line In FileLines
    3. If Line.StartsWith("Var3") Then MessageBox.Show(Line.Split("="c)(1)): Exit For
    4. Next
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    VB.NET-Quellcode
    Dim FileLines = IO.File.ReadAllLines(Dateipfad)
    For Each Line In FileLines
    If Line.StartsWith("Var3") Then MessageBox.Show(Line.Split("="c)(1)): Exit For
    Next


    Danke. Die Datei sieht zwar nicht genau so aus, aber so ähnlich. Heißt Settingname, dann ein = und dann die Einstellungen. (Das Program, welche Die Datei dann verwendet kommt übrigens nicht von mir ;) )

    Grüße!
    @HeizungAuf5 Die Frage in Post #4 hast Du noch nicht beantwortet.
    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!