textdatei öffnen, wort suchen und zeilennummer herrausfinden und zeile bearbeiten

  • VB.NET

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

    textdatei öffnen, wort suchen und zeilennummer herrausfinden und zeile bearbeiten

    moin leute

    ich komm nit mehr weiter sorry leute :(
    und zwar...
    ich habe eine test.txt datei und in der will ich ein bestimmtes wort suchen und wenn das word vorhanden ist brauch ich die zeilennummer von dem wort!
    also steht das wort in zeile 5 dan brauch ich zeile 5! ich weiss aber nicht in welche zeile das wort steht!
    hab jetzt schon im netz gekuckt aber finde jede menge um wörter zu suchen aber leider ohne zeilennummer ;(
    das wort existiert nur einmal in der txt-datei!

    dan möchte ich diese zeile komplett bearbeiten? wie mache ich das am besten?
    löschen bekomme ich schonmal hin ;) nur nicht das schnelle bearbeiten :(

    wäre euch sehr dankbar ;)
    Hallo,

    hier hast du ein Beispiel:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim s() As String = IO.File.ReadAllLines("C:\test.txt")
    3. Dim u As String = "in folgende Zeilen kommmts vor:" & Environment.NewLine
    4. For i = 0 To s.Length - 1
    5. If s(i).Contains("daswirdgesucht") Then
    6. u += (i + 1).ToString & Environment.NewLine
    7. End If
    8. Next
    9. MessageBox.Show(u)
    10. End Sub


    mfG

    Derfuhr
    Die ganzen Zeilen der TXT sind doch im String-Array "s()". s(0) ist die erste Zeile, s(1) die zweite, usw. wenn vorhanden.

    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Dim s() As String = IO.File.ReadAllLines("C:\test.txt")
    3. For i = 0 To s.Length - 1
    4. If s(i).Contains("daswirdgesucht") Then
    5. s(i) = "Der neue String"
    6. End If
    7. Next
    8. End Sub


    Natürlch wird der Wert nur im Array geändert, nicht in der TXT. Du musst sie bei bedarf erstellen/überschreiben.

    mfG

    Derfuhr

    MVN050 schrieb:

    nur nicht das schnelle bearbeiten
    Möchtest Du diese Zeile am Ort ändern?
    zB:

    VB.NET-Quellcode

    1. If lines(5) = "bla" Then lines(5) = "blaBla"
    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!

    RodFromGermany schrieb:

    MVN050 schrieb:

    nur nicht das schnelle bearbeiten
    Möchtest Du diese Zeile am Ort ändern?
    zB:

    VB.NET-Quellcode

    1. If lines(5) = "bla" Then lines(5) = "blaBla"


    ja möchte ich eig ;)
    allerdings sagt er mir das er mir "lines" nix anfangen kannß muss ich da jetzt noch was hinzufügen oder wie?

    MVN050 schrieb:

    ja möchte ich eig ;)
    Ich wollte nur rauskriegen, was Dein Plan ist. ;)
    Die Lösungen stehen da, nimm die von @Derfuhr:.
    Feddich.
    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!
    ~blaze~ hat es doch vorher geschrieben:

    ~blaze~ schrieb:

    Hi
    lies doch einfach per System.IO.File.ReadAllLines, such' die Zeile per For-Schleife, setze den Eintrag und schreib' die Daten per WriteAllLines wieder raus.

    Gruß
    ~blaze~
    Mit WriteAllLines wird das neue Array wieder in die Datei geschrieben.
    gut das hab ich nun auch verstanden ;)
    nun warscheinlich das letzte problem :rolleyes:

    kann ich jetzt auch mit dme beispiel von derfuhr die komplette zeile löschen? ich bekomme zwar den text gelöscht ABER dan is die zeile noch da allerdings ohne inhalt und das is irgentwie... schei.... :S

    MVN050 schrieb:

    kann ich jetzt auch mit dme beispiel von derfuhr die komplette zeile löschen?


    mit

    VB.NET-Quellcode

    1. s(i) = "Der neue String"

    wird die Zeile doch ersetzt, bzw. der Wert des Index(i) im Array. Mit

    VB.NET-Quellcode

    1. IO.File.WriteAllLines("C:\test.txt", s)

    erstellst bzw. überschreibst du die TXT mit den Inhalt von s()

    mfG

    Derfuhr

    RodFromGermany schrieb:

    Möchtest Du diese Zeile am Ort ändern?

    MVN050 schrieb:

    ja möchte ich eig ;)
    Also:
    Erst überlegen, dann solch alles in den Eröffnungsthread schreiben.
    Probier mal dies:

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines(DEINE_DATEI)
    2. Dim ll As List(Of String) = lines.ToList
    3. ll.RemoveAt(4)
    4. IO.File.WriteAllLines(DEINE_DATEI, ll.ToArray)
    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!