Zeile aus einer Textfile auslesen und ersetzen

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von timonator.

    Zeile aus einer Textfile auslesen und ersetzen

    Hallo,

    ich brauche eure Hilfe.

    Ich möchte Mithilfe von VB.NET eine Textfile Zeile für Zeile auslesen und die Zeile mit einem bestimmten Text aus dieser Zeile ersetzen.

    Der Text in der Textfile hat in etwa folgenden Aufbau:

    ACI WORLDI INC ACIW
    ACORDA THERAP INC ACOR
    ACTAVIS PLC ACT
    ...

    In der ersten Zeile sollte die gesamte Zeile durch ACIW ersetzt werden. Die zweite Zeile sollte durch ACOR ersetzt werden. Also immer durch das letzte Wort von rechts bis zum Leerzeichen.

    Wie könnte ich hier vorgehen?

    Vielen Dank im Voraus!

    LG
    Wella
    @Wella1606 Willkommen im Forum. :thumbup:
    Da gibt es grundsätzlich 2 Möglichkeiten:
    1. Lies die komplette Datei mit IO.File.ReadAllLines(...) ein, bearbeite die relevanten Zeilen und schreib die Daiei mit IO.File.WriteAllLines(...) wieder auf Platte.
    2. Wenn die Datei länget ist, mach Dir eine For Each-Schleife über alle Zeilen mit IO.File.ReadLines(...), bearbeite die relevanten Zeilen und häng sie einzeln wieder an eine neue Datei mit IO.File.AppendAllText(...).
    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!

    Wella1606 schrieb:

    das hört sich bei dir alles so leicht an.
    Das ist ganz leicht.

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines("c:\Temp\test.txt")
    2. If lines.Length > 3 Then
    3. lines(3) = "bla"
    4. End If
    5. IO.File.WriteAllLines("c:\Temp\test.txt", lines)
    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!
    Vielen Dank,

    meine .txt Datei hat aber sehr viele Zeilen. Die Zeilen ist in etwa so aufgebaut:

    ACI WORLDI INC ACIW
    ACORDA THERAP INC ACOR
    ACTAVIS PLC ACT

    Die Zeilen haben unterschiedlich viele Wörter und ich möchte, dass jede Zeile durch das letzte Wort ersetzt wird. Also die erste Zeile soll durch ACIW ersetzt werden, die zweite durch ACOR, usw.

    Wie kann ich das noch hinkriegen?

    LG
    Wella

    Wella1606 schrieb:

    dass jede Zeile durch das letzte Wort ersetzt wird.
    So was:

    VB.NET-Quellcode

    1. Dim lines() = IO.File.ReadAllLines("c:\Temp\test.txt")
    2. For i = 0 To lines.Length - 1
    3. If lines(i).Length > 0 Then
    4. Dim parts() = lines(i).Split(" "c)
    5. lines(i) = parts(parts.Length - 1)
    6. End If
    7. Next
    8. IO.File.WriteAllLines("c:\Temp\test.txt", lines)
    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!

    Wella1606 schrieb:


    meine .txt Datei hat aber sehr viele Zeilen. Die Zeilen ist in etwa so aufgebaut:

    ACI WORLDI INC ACIW
    ACORDA THERAP INC ACOR
    ACTAVIS PLC ACT

    Die Zeilen haben unterschiedlich viele Wörter und ich möchte, dass jede Zeile durch das letzte Wort ersetzt wird. Also die erste Zeile soll durch ACIW ersetzt werden, die zweite durch ACOR, usw.
    Sieht mir aus, als seien es Datensätze, mit LangName und Kurzname.

    Ich rate mal ins blaue hinein: Über kurz oder lang, wirst du auf Standard-Technologie für Datenverarbeitung umstellen - so "Informations-Vernichtung" - naja - mag im Einzelfall und vorläufig erstmal für dich genügend funktionieren.