Alles in Klammer löschen

  • VB.NET
  • .NET 7–8

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

    Alles in Klammer löschen

    Hallo,

    ich bin neu hier und bastle ein wenig mit Visual Studio an einem kleinen Projekt, welches eine Teilnehmerliste in einer TextBox enthält. Diese Liste wird aus einem anderen Programm kopiert und in die TextBox eingefügt.

    Diese sieht so aus:

    Name1
    Ø 0
    (Ø 47.21)
    Name2
    Ø 0
    (Ø 36.35)
    Name3
    Ø 0
    (Ø 56.69)
    Name4
    Ø 0
    (Ø 51.47)

    Nun möchte ich durch Klick auf einen Button das die Klammern samt Inhalt gelöscht/ersetzt werden. Das mit dem Klick Button ist klar. Das braucht ihr mir nicht erklären ;)

    Ich habe schon ein wenig ausprobiert aber ich bekomme es einfach nicht hin. Ich bin auch kein Profi, deswegen ist noch nicht alles so verständlich für mich.

    Ich denke aber das es bestimmt gar nicht so kompliziert sein kann. Theoretisch muss ich mir ja den String mit den Klammern irgendwie raussuchen und dann einfach ersetzen. Sehe ich das richtig?

    Aber wie?

    Könnt ihr mir dabei bitte behilflich sein?

    Vielen Dank
    Willkommen im Forum.
    Wenn der Aufbau tatsächlich so ist, wie Du hier zeigst, kannst Du auch einfach jeden 3. Eintrag leeren/ersetzen.
    Weißt Du, wie Du das coden kannst?
    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.
    Ich nochmal.

    Also ich habe nun folgendes gefunden und für mich geändert.

    VB.NET-Quellcode

    1. Dim tmp As New System.Text.StringBuilder
    2. For Each line As String In TextBox1.Lines
    3. If line.Trim.Contains("Ø") Then tmp.AppendLine(line)
    4. Next
    5. TextBox1.Text = tmp.ToString


    Allerdings wird jetzt jede Zeile gelöscht, außer die die gelöscht werden sollen.

    Nämlich die mit dem Zeichen "Ø"
    Also vom Prinzip her findet er ja das was er soll. Nur habe ich jetzt das Problem das er eben nicht das löscht sondern die Namen :(

    Ich versuche auch mit Remove und clear zu arbeiten, aber irgendwie nimmt er mir das nicht ab.

    Was mache ich falsch?

    Code-Tags eingefügt. ~Thunderbolt

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

    Vielen herzlichen Dank für die schnelle Hilfe. Ihr seit echt Klasse.

    Es funktioniert nun so wie ich es möchte :)

    Damit:

    VB.NET-Quellcode

    1. Dim tmp As New System.Text.StringBuilder
    2. For Each line As String In TextBox1.Lines
    3. If Not line.Trim.Contains("Ø") Then tmp.AppendLine(line)
    4. Next
    5. TextBox1.Text = tmp.ToString


    Code-Tags eingefügt. ~Thunderbolt

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

    VB.NET-Quellcode

    1. TextBox1.Lines = TextBox1.Lines.Select(Function(s,i) New With {.idx = i, .line = s}).Where(Function(x) x.idx Mod 3 = 0).Select(Function(x) x.line).ToArray
    Hm, mit LINQ sieht das ausnahmsweise auch mal nicht schöner aus... Aber vielleicht effizienter? Nee.
    So besser:

    VB.NET-Quellcode

    1. Dim lines = TextBox1.Lines
    2. Dim FilteredLines as New List(Of String)
    3. For i = 0 To lines.Length - 1 Step 3
    4. FilteredLines.Add(lines(i))
    5. Next
    6. TextBox1.Lines = FilteredLines.ToArray

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()