Wie kann ich in einer Richtextbox in VB.Net einen Text in Klammern ans Ende setzen?

  • VB.NET
  • .NET 5–6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von MARVIN2222.

    Wie kann ich in einer Richtextbox in VB.Net einen Text in Klammern ans Ende setzen?

    Hallo, ich schreibe schon länger an meinem Programm.

    Es soll aus einer Richtextbox1 den Text lesen und diesen dann in eine .txt Datei schreiben.

    Aber er soll das nicht einfach so schreiben.

    Ein Beispiel zum besseren Verständnis:

    So steht der Text in der Richtextbox1 jetzt:

    test@hotmail.com (Outlook);Password12345
    test2@gmail.com (Gmail);Passwordg125

    Es soll aber nachher so in der .txt Datei stehen:

    test@hotmail.com;Password12345;Outlook
    test2@gmail.com;Passwordg125;Gmail

    Wenn ihr mir da helfen könntet, wäre ich sehr dankbar.

    Danke :)
    Willkommen im Forum.

    Wenn dieser Textaufbau genau so ist, kommst Du mit DeineRichTextBox.Lines an die einzelnen Nur-Text-Zeilen der RichTextBox.
    Jede Zeile nimmst Du her und spaltest sie mit DeinZeilentext.Split zuerst am ;. Dadurch wird die erste Zeile zu test@hotmail.com (Outlook) und Password12345*
    Den ersten TeilText kannst Du an dem Leerzeichen oder der Klammer-auf splitten und dann eben so Mailadresse und Mail-Anbieter erhalten. Du hast dann also Mail-Adresse, Anbieter und Passwort. Und die kannst Du nach Belieben dann mit String.Join in gewünschter Reihenfolge zusammenbasteln.

    Und bald kommt jemand vorbei und macht bestimmt einen Regex-Vorschlag.

    *sollten sich im Passwort auch Semikolons befinden, musst Du die Textteile später mit String.Join wieder zusammenfügen. Aber das wird nicht passieren, schließlich sollte nirgends ein Klartextpasswort auftauchen, richtig? :rolleyes:
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Du könntest durch jede Zeile der RichTextBox gehen, Stichwort:

    VB.NET-Quellcode

    1. For i As Integer = 0 To RichTextBox1.Lines.Length - 1
    2. Next


    Dann kannst du abfragen, ob in der Zeile "(Outlook)" oder "(Gmail)" vorkommt und das dann durch "" ersetzen.
    Dann einfach der Line ";Outlook" oder ";Gmail" anhängen, je nachdem was in der Abfrage rauskommt.


    Meine Website:
    www.renebischof.de

    Meine erste App (Android):
    PartyPalooza
    Ha ich habe mal @xored's Antwort aus einem anderen thread hergenommen und ChatGPT gefüttert:
    Frage:
    Ein VB.Programm soll eine Richtextbox auslesen und in eine Textdatei schreiben. Dabei soll aus dem Text vom Aufbau "test@hotmail.com (Outlook);Password12345" der Text "test@hotmail.com;Password12345;Outlook" generiert werden.

    Antwort:
    Um dies zu erreichen, können Sie zunächst den Inhalt der Richtextbox auslesen und in eine Variable speichern. Dann können Sie eine Schleife verwenden, um jede Zeile des Textes zu durchlaufen, und innerhalb der Schleife können Sie die String-Funktionen "IndexOf" und "Substring" verwenden, um die Position des Klammerzeichens "( )" zu finden und den Text vor und nach diesem Zeichen auszuschneiden und zu kombinieren. Schließlich können Sie den neu generierten Text in die Textdatei schreiben.

    Frage:
    Bitte das Programm dazu schreiben

    Antwort:
    Ich kann Ihnen ein Beispielprogramm in Visual Basic geben, das die oben beschriebene Funktionalität implementiert:

    VB.NET-Quellcode

    1. ' Variablen deklarieren
    2. Dim strText as String = RichTextBox1.Text
    3. Dim strNewText as String = ""
    4. ' Schleife durch jede Zeile des Textes
    5. For Each strLine As String In strText.Split(vbNewLine)
    6. ' Position der Klammer finden
    7. Dim intPos As Integer = strLine.IndexOf(" (")
    8. ' Text vor und nach der Klammer ausschneiden und zusammensetzen
    9. strNewText += strLine.Substring(0, intPos) & ";" & strLine.Substring(intPos + 2, strLine.Length - intPos - 3) & vbNewLine
    10. Next
    11. ' Neuen Text in die Textdatei schreiben
    12. My.Computer.FileSystem.WriteAllText("C:\example.txt", strNewText, False)

    zusätzlicher Hinweistext zur Antwort:
    Dieses Programm verwendet die RichTextBox1.Text Eigenschaft, um den Inhalt der Richtextbox in die Variable strText zu lesen. Es verwendet dann die Split Methode um jede Zeile in ein Array von Strings zu splitten. Innerhalb der Schleife über die einzelnen Strings, verwendet es die IndexOf Methode um die Position des Klammerzeichens zu finden und verwendet dann die Substring Methode um den Text vor und nach der Klammer zu extrahieren.
    Es kombiniert diese beiden Teile mit einem Semikolon und speichert den neu generierten Text in die Variable strNewText. Schließlich verwendet es die WriteAllText Methode, um den Inhalt der Variable strNewText in die Textdatei "C:\example.txt" zu schreiben.

    Hinweis: Dies ist ein Beispiel und sollte an die spezifischen Anforderungen Ihres Projekts angepasst werden.
    Das ist gruselig, dieser KI-Fortschritt. Also, ich bewerte jetzt mal nicht den Code. Aber diese Antworten eines offensichtlich hochentwickelten Chat-"Bots" - wobei das wohl eine Beleidigung für ChatGPT wäre, wenn sich ChatGPT beleidigen ließe. Bald stellt man dem Teil die Frage, wie sich die Menschheit mit den heutigen Methoden retten ließe und man würde wohl eine detaillierte Schritt-für-Schritt-Antwort bekommen 8|
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Bald stellt man dem Teil die Frage, wie sich die Menschheit mit den heutigen Methoden retten ließe und man würde wohl eine detaillierte Schritt-für-Schritt-Antwort bekommen

    Dazu bräuchte es aber keine KI, es sein denn... ;)
    Man merkt gut am Code, dass ChatGPT eben auch "ranz-Code raushaut. Ich bin kein VB Programmierer und sehe es daher eher nicht.
    Negativ Aufgefallen war mir sofort der "My"-Namesspace aber ich sehe jetzt auch noch andere Stellen. Das schöne ist eben grundsätzlich an C#, dass man hier eigentlich immer qualittativ bessere Antworten erwarten darf.
    Auch beim "normalen" googlen.