Aus einer Textdatei bestimmte Stellen auslesen

  • VB.NET

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

    Aus einer Textdatei bestimmte Stellen auslesen

    Hallo,

    ich will ein kleines Programm haben, dass mir aus einer Textdatei bestimmte Stellen herausliest und die dann ausgibt.
    Die bestimmten stellen stehen immer am anfang einer zeile und beginnen mit gc.

    Bisher habe ich die textdatei komplett ausgelesen und in ein label gepackt, doch jetzt weiß ich nicht wie ich dort meine bestimmten Stellen herausbekomme.

    Ich hoffe ihr könnt mir helfen,
    ein Danke im Vorraus,

    owl-fritz
    msdn.microsoft.com/de-de/libra…eadline%28v=vs.80%29.aspx


    Dim sr As StreamReader = New StreamReader(path)

    Do While sr.Peek() >= 0
    Console.WriteLine(sr.ReadLine())
    Loop
    sr.Close()

    Der Teil ist für dich interessant...
    Da wird die Datei Zeilenweise eingelesen, die Zeile bekommst du jeweils bei sr.ReadLine(), wenn du dessen Wert einer Variablen zuweist kannst du Super damit weiterarbeiten...

    Du benötigst dafür die String-Funktion StartsWith(überprüft ob ein String mit einer bestimmten Zeichenfolge beginnt - "gc."), sobald diese True ergibt kannst du die Variable entsprechend weiter verarbeiten...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Danke schonmal für deine Hilfe doch ich komme da irgendwie noch nicht so richtig weiter.
    Wie kann ich denn ganz einfach meine Stelle die zum Beispiel gc123 heisst rauskopieren?

    Die Zeilen beginnen übrigens immer mit gc.
    Hier ein Beispiel wie eine Zeile aussieht:
    GC2V63Y,2011-05-22T20:08Z,Found it,""

    Wäre es nun nicht möglich die Zeile aufzutrennen und nur noch GC2V63Y anzeigen zu lassen?
    Da die Kommas als Feldtrenner fungieren

    P.S. Ich bin noch ein Anfänger :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „owl-fritz“ ()

    Mittels startswith und split:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Path As String = Application.StartupPath & "\datei.txt"
    2. Dim sr As IO.StreamReader = New IO.StreamReader(Path)
    3. Do While sr.Peek() >= 0
    4. Dim Zeile As String = sr.ReadLine
    5. If Zeile.StartsWith("GC") Then 'Wenn die aktuelle Zeile mit GC beginnt..
    6. Dim SplittedPart() As String = Zeile.Split(","c) 'Splitte bei Komma
    7. 'Trage in Listbox ein
    8. ListBox1.Items.Add(SplittedPart(0)) 'In Feld 0 des Arrays ist der Teil des Strings bis zum ersten Komma
    9. End If
    10. Loop
    11. sr.Close()
    mit Regex könnte das sehr elegant und performant gehen:

    VB.NET-Quellcode

    1. Imports System.Text.RegularExpressions
    2. Public Class frmSpatzenkanonier
    3. Private Function GetAllGCs(ByVal filename As String) As MatchCollection
    4. Dim content = My.Computer.FileSystem.ReadAllText(filename)
    5. Return Regex.Matches(content, "gc.+?(?=,)", RegexOptions.IgnoreCase)
    6. End Function
    In der zurückgegebenen MatchCollection stehen alle Treffer drin.

    Gugge auch RegexTester, und das dort verlinkte Tut