RTB-Text durchsuchen und ändern

  • VB.NET

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

    RTB-Text durchsuchen und ändern

    Hallo liebe VB-Experte,

    wüsstet ihr eine Möglichkeit Text einer Richtextbox Zeile für Zeile durchzusuchen und bestimmte Teile jeder Zeile zu ersetzen bzw. zu Substring'en?


    in diesem Beispiel möchte ich "c:\TEST\ORDNER01\" komplett ersetzt\gelöscht haben.

    Es will einfach nicht funktionieren. :(
    Könnt ihr mich auf meinen Fehler hinweisen? Was mache ich falsch? Ist eine For-Schleife nicht der richtige Ansatz für solche Zwecke? Habe ich die For-Schleife evtl. falsch formuliert?

    VB.NET-Quellcode

    1. For i As Integer = 0 To RichTextBox1.Lines.Length - 1
    2. If RichTextBox1.Lines(i).Contains("c:\TEST\ORDNER01\") Then
    3. RichTextBox1.Lines(i).Replace("c:\TEST\ORDNER01\", "")
    4. End If
    5. Next i

    Hoffe Ihr könnt mir helfen.

    Vielen DanK!!


    Edit by Manschula: Bitte verwende für deine Fragen/Probleme eigene Themen und keine, die bereits über drei Jahre alt sind --> Beiträge in neues Thema ausgelagert, Titel+Präfix angepasst
    Edit by PRESTiGE: Sorry, mache ich nächstes Mal besser...

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „PRESTiGE“ ()

    Deine Herangehensweise ist falsch.
    Wie kommst Du denn an die FileNamen ran?
    Mach doch die Auslesung gleich zu Deiner Selektion:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. For Each fi As System.IO.FileInfo In New System.IO.DirectoryInfo("c:\temp").GetFiles("*.jpg")
    3. RichTextBox1.AppendText(fi.Name & Environment.NewLine)
    4. Next
    5. End Sub
    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!
    Eine sehr schöne Methode Pfade\Filenamen einzulesen. Vielen Dank Rob!

    Allerdings möchte ich die Pfade tatsächlich kürzen lassen, da sie aus einer Datenbank händisch kopiert werden. Die Pfade können variieren (also nicht immer "c:\Temp"). "Substring" wäre eig. die ideale Lösung, da jeder Pfad eine Konstante haben wird (in diesem Beispiel das Wort "files"):
    "c:\1-2-3\files\file.exe"
    "c:\5-5-5\files\file5.exe"
    "c:\temp\files\picture.jpg"

    Lässt sich mein Vorhaben überhaupt realisieren? Könntest Du mir n kleinen Tipp geben, wo ich graben soll bzw. mit welcher Schleife sich sowas am besten realisieren lässt?

    Vielen Dank!!


    Edit by Manschula: (Unnötiges) Vollzitat entfernt

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

    Vielleicht so:

    VB.NET-Quellcode

    1. Dim files() As String = {"c:\1-2-3\files\file.exe", "c:\5-5-5\files\file5.exe", "c:\temp\files\picture.jpg"}
    2. For Each file In files
    3. Dim fi As New System.IO.FileInfo(file)
    4. ' mit fi was tun
    5. Next
    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!
    Danke Rod. Die Methode ist schön, aber nicht variabel genug für mich und erfüllt nicht genau das, was ich wollte. Womöglich habe ich mein Problem falsch formuliert (sorry).
    Nach ca. 20 Stunden konnte ich mein Problem endlich lösen. Ist schon erschreckend wie einfach manche Lösungen aussehen und wie schwer sie einem fallen.

    VB.NET-Quellcode

    1. Dim Zeilen(RTB.Lines.GetUpperBound(0)) As String
    2. For i As Integer = 0 To RTB.Lines.GetUpperBound(0)
    3. If RTB.Lines(i).IndexOf("files") > 0 Then
    4. Zeilen(i) = RTB.Lines(i).Substring(RTB.Lines(i).IndexOf("files"))
    5. Else
    6. Zeilen(i) = RTB.Lines(i).Substring(0)
    7. End If
    8. Next
    9. RTB.Lines = Zeilen


    Nochmals Danke für die Unterstützung!

    p.s. [NICHT WICHTIG] Warum wird mein VB-Code im Forum falsch formatiert? Gibt es da was zu beachten?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „PRESTiGE“ () aus folgendem Grund: Wollte meinen VB-Code formatieren. Klappt leider nicht. Sowas kann man garnicht lesen. Was mache ich den falsch??

    Da hast Du natürlich die suboptimale Lösung gefunden. :D

    PRESTiGE schrieb:

    Gibt es da was zu beachten?
    Arbeite mit dem Quellcode-Tab, nicht aber mit dem Editor-Tab:
    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!