Ein Teil des Textes aus txt datei auslesen.

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    Ein Teil des Textes aus txt datei auslesen.

    Hallo,

    ich will ein Teil des Textes auslesen(kopieren) und zwar es wird eine Variabele in dem Text gefunde (ein Wort) und unter diesen Wort will ich 5 zeilen kopieren und in einem neuen Fenster ausgegeben txt Datei ausgeben.

    :) ich danke schon man in vorraus!
    @ timi257

    ist doch ganz einfach -

    Er möchte eine komplette TxT datei auslesen, dann mit txt.ToString.Contains(Wort) auslesen und dann die 5 weiteren Zeilen auslesen.

    Dann möchte er glaube ich alles in eine TxT datei schreiben. :)

    Mfg editor

    [Edit]
    Nein falsch .. Ich bin verwirrt.
    Nicht mit contains ...
    verwende IndexOf, somit erfährst du die Position der Zeichenfolge, mit Substring ließt du einfach nur den hinteren Teil aus, dieses Ergebnis splittest du nur noch bei allen Zeilenumbruch und nimmst aus dem erhaltenen Array den Item mit dem Index 5...fertig...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    dann halt so :P ich hoffe da wär er dann noch selbst draufgekommen^^

    P.S.: Mit RegEx würde es natürlich auch gehen^^

    Edit: Beitragszahl: Schnappszahl^^ 2 222
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Regex kann suchen / kopieren / ersetzen , sowie Windeln waschen und Kaffee kochen wenn man unseren Gurus hier glaubt. Aber lass Regex einfach zur Zeit mal weg, Dein Suchwort findest Du auch ganz normal über string.contains() .

    Zur Lösung Deiner Aufgabe gibt es zig Möglichkeiten, warum nimmst Du nicht eine die Deinem jetzigen Kenntnisstand entspricht ?

    VB.NET-Quellcode

    1. ' Datei einlesen
    2. Dim reader As New StreamReader("Datei.txt")
    3. ' zeilenweise lesen
    4. dim line as string
    5. While reader.Peek() <> –1
    6. line = reader.ReadLine()
    7. ' hier Logik für Textsuche, Zeile kopieren
    8. End While
    9. ' reader schliessen
    10. sr.Close()

    Ich habe nur keine Lust Dir hier gleich C&P Code vorzukauen, etwas solltest Du schon selber machen.

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

    Momentan habe ich mein Programm soweit gebracht!


    Public Class Form1
    Dim Eingabe As String
    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    Eingabe = TextBox1.Text
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim inhalt As String = My.Computer.FileSystem.ReadAllText("C:\text.txt")
    If inhalt.Contains(Eingabe) Then
    My.Computer.FileSystem.WriteAllText("C:\text2.txt", inhalt, True)
    Process.Start("C:\text2.txt")
    Else
    MsgBox("Dieses Symbol ist nicht vorhanden!")
    End If

    End Sub
    End Class




    Jetzt habe ich versucht das Programm zu änder, so das ich das Einlesen von Text mit streamreader zu ermöglichen. Leider muss ich dafür System.IO einfügen

    und der wiedermal funktioniert nicht mit If abfrage da

    .Contain (Eingabe)

    nicht gibt.
    Dateien
    • sdfada.txt

      (691 Byte, 198 mal heruntergeladen, zuletzt: )
    immerhin schon einmal ein Anfang ;)

    Wie gesagt gibt es einige Möglichkeiten:

    Du liest zur Zeit mit

    VB.NET-Quellcode

    1. Dim inhalt As String = My.Computer.FileSystem.ReadAllText("C:\text.txt")

    die ganze Datei auf einmal in einen string "Inhalt".

    Diesen String kannst Du jetzt mit Split

    VB.NET-Quellcode

    1. ' in Zeilen aufsplitten
    2. Dim Zeilen() As String = Inhalt.Split(ControlChars.Lf)
    3. ' Zeilenarray durchlaufen
    4. For i As Integer = 0 To Zeilen.Length - 1
    5. If Zeilen(i).Contains(suchWort) Then
    6. ' ab zeile i+1 bis i+5 zeilen abspeichern wenn i+5 noch im Index liegt
    7. End If
    8. Next

    in einen StringArray "Zeilen" zeilenweise aufsplitten und dann durchsuchen. Nur musst Du aufpassen dass tatsächlich noch 5 Zeilen nach dem Suchwort kommen.

    Oder Du liest die Datei statt mit ReadAllText gleich zeilenweise wie bei meinem Beispiel und machst dort das Prüfen und Abspeichern.

    Geht beides, was Dir halt einfacher erscheint.

    @timi257 dieses Forum braucht Genies wie Dich :)
    Hallo Kangaroo

    Ich habe jetzt mi my.settings versucht zu speichern, leider bekam ich eine Fehlermeldung

    Dim Speicher As String

    My.Settings.Zeilen(i) = Speicher

    Fehler: "Zeilen" ist kein Memeber von "WindowsApplication1.My.MySetting".

    wie kann ich alle Zeilen abspeichern.
    Danke für das Vertrauen, wo ich doch my.settings nie benutze :( , sondern immer nur XML Serialisierung ...

    Den Fehler bekommst Du, weil Du vermutlich in den Projekt-Eigenschaften Deine Settings-Variable "Zeilen" nicht definiert hast. Problem ist wohl, dass Arrays so in my.settings nicht definiert sind, Fraju hat hier eine Lösung beschrieben.

    Wenn Du nur Deine 5 Zeilen speichern willst, dann kannst Du dafür Zeile1,Zeile2,Zeile3,Zeile4,Zeile5 anlegen und dann manuell zuweisen.