Alle doppelten Zeilen aus einer Textbox löschen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von lang11.

    Alle doppelten Zeilen aus einer Textbox löschen

    Moin,

    meine Frage steht oben. Ich habe jetzt ein Beispielprogramm geschrieben mit der Textbox1. Die erste Zeile ist Hallo, die zweite ist Test und die dritte ist wieder Hallo. Nun will ich die Zeilen vergleichen und wenn festgestellt wird, dass sie gleich sind eine von beiden gelöscht wird.


    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim f As Integer
    4. Dim i As Integer
    5. TextBox1.Text = "Hallo" & vbCrLf & "Test" & vbCrLf & "Hallo"
    6. f = TextBox1.Lines.Length
    7. TextBox2.Text = f
    8. For Each lline As String In TextBox1.lines()
    9. For i = 0 To f
    10. If lline(i) = lline(i + 1) Then
    11. TextBox1.Lines(i) = ""
    12. End If
    13. Next i
    14. Next
    15. End Sub
    16. End Class


    So funktioniert es aber nicht haha. Hab schon gegooglet aber leider echt nichts gefunden.

    Mit freundlichem Gruß
    @lang11 LINQ hilft Dir:

    VB.NET-Quellcode

    1. Dim lines() = TextBox1.Lines.Distinct().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!
    Erstmal bitte Option Strict On, da Problemfall in Z#10.
    Dann in Z#13: Indexfehler, da 0 bis f - 1, nicht 0 bis f.
    Setz mal in Z#14 nen Haltepunkt und warte, bis der Debugger vorbeikommt und das Programm stoppt. Was siehst Du, wenn Du auf lline(i) zeigst? Richtig: einen einzelnen Buchstaben. Du vergleichst also Zeichen miteinander, keine Zeilen.
    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.

    RodFromGermany schrieb:

    @lang11 LINQ hilft Dir:

    VB.NET-Quellcode

    1. Dim lines() = TextBox1.Lines.Distinct().ToArray()


    Vielen Dank.
    So hat es geklappt:

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim f As Integer
    4. f = 2
    5. TextBox1.Text = "Hallo" & vbCrLf & "Test" & vbCrLf & "Hallo"
    6. TextBox1.Lines = TextBox1.Lines.Distinct().ToArray()
    7. End Sub
    8. End Class