Doppelte Zeichenfolge Aus String filtern

  • VB.NET

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

    Doppelte Zeichenfolge Aus String filtern

    Hallo,

    Ich möchte aus einem String vielfach, hintereinander vorkommende Zeichen(-folgen) herausfiltern und es nur zur einer machen, jedoc möchte ich, dass dies nur für bestimmte Folgen gemacht wird Bsp.

    String = "NSjduasJJASSSSSStringStringString sdsöls,fsd"

    Das Dreimal String in dem String soll zu einem verkürzt werden hättet ihr ne Idee für mich?

    Danke im Vorraus

    Gruß

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim input As String = "NSjduasJJASSSSSStringStringString sdsöls,fsd"
    5. Dim index = input.IndexOf("String")
    6. If index <> input.LastIndexOf("String") Then
    7. input = input.Replace("String", String.Empty).Insert(index, "String")
    8. End If
    9. MessageBox.Show(input)
    10. End Sub
    11. End Class
    @Jorowe:: Und was machst Du, wenn da "StrngStrng" drin steht?
    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!
    Habe da etwas ausgeknobelt und einfach Schritt für Schritt gehalten:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Strict On
    2. Class Form1
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. Dim str As String = "NSNSjduduaasJJASSSSSStringStringString sdsöls,fsd"
    5. Dim result = cleanUpString(str)
    6. End Sub
    7. Function cleanUpString(str As String) As String
    8. Dim c As String = ""
    9. For j = 1 To (str.Length - 1) \ 2
    10. For i = 0 To str.Length - (1 + j)
    11. If i < str.Length - j Then
    12. c = str.Substring(i, j)
    13. Dim e = str.IndexOf(c, i + j)
    14. If i + j = e Then
    15. str = str.Remove(i + 1, j)
    16. i -= 1
    17. End If
    18. Else
    19. Exit For
    20. End If
    21. Next
    22. Next
    23. Return str
    24. End Function
    25. End Class

    Da könnte man sicher noch etwas verkürzen - wäre vielleicht etwas für die Kobeleiecke in diesem Forum...

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