Text splitten mit Regex.Split(...)

  • VB.NET

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

    Text splitten mit Regex.Split(...)

    Hallo.

    Ich möchte einen String (Lange z.B = 128 Zeichen) in jeweils 40 Zeichen splitten.
    Mehrere Versuch mit

    For Each s AS String In Regex.Split(String, ?... )
    ...
    Next

    habe ich durchgeführt.
    Leider alles ohne brauchbares Resultat.
    Ich bekommen das 2te Argument nicht hin. Also da wo das ? steht.
    Kann mir bitte jemand sagen, was da stehen soll?

    Vielen Dank
    Gruß Roberto
    Danke Peter329 für die Antwort.
    Hast ja komplett recht.
    Mit .Substring geht ja nun auch.
    Noch lieber wäre mir das mit der normalen Split-Funktion.
    Die verlangt allerdings ein Trennzeichen. Das habe ich nicht ja nicht.
    Also folge ich deinem Tipp und benutze .Substring

    Danke
    VG Roberto

    Roberto schrieb:

    Noch lieber wäre mir das mit der normalen Split-Funktion.
    Möchtest Du den String "zerschneiden" oder möchtest Du durch ein Trenn-Zeichen separierte Teil-Strings ergalten?
    "0123456789012345678901234567890123456789" => { "0123456789", "0123456789", "0123456789", "0123456789" }
    "0123456789|0123456789|0123456789|0123456789" => { "0123456789", "0123456789", "0123456789", "0123456789" }
    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!
    Ich denke da an die optische Aufbereitung von IBAN, wo man so etwas gut gebrauchen kann. Habe dazu ein Textprojekt gebastelt eben.
    Da ich in C# schreibe ist der VB.Net Code aus Telerik
    Spoiler anzeigen

    C#-Quellcode

    1. internal List<string> SplitByLength(string stringVal, int lenVal)
    2. {
    3. if ((stringVal.Length <= lenVal) || lenVal < 2) return new List<string>(new string[] { stringVal });
    4. int startVal = 0;
    5. List<string> retVal = new List<string>();
    6. while (startVal < stringVal.Length)
    7. {
    8. if (startVal + lenVal <= stringVal.Length)
    9. {
    10. //Am Ende bleibt was übrig
    11. retVal.Add(stringVal.Substring(startVal, lenVal));
    12. }
    13. else
    14. {
    15. //Es ist ein Rest vorhanden aber kein voller String in Splitlänge
    16. retVal.Add(stringVal.Substring(startVal, stringVal.Length - startVal));
    17. }
    18. startVal += lenVal;
    19. }
    20. return retVal;
    21. }


    VB.NET-Quellcode

    1. Friend Function SplitByLength(ByVal stringVal As String, ByVal lenVal As Integer) As List(Of String)
    2. If (stringVal.Length <= lenVal) OrElse lenVal < 2 Then Return New List(Of String)(New String() {stringVal})
    3. Dim startVal As Integer = 0
    4. Dim retVal As List(Of String) = New List(Of String)()
    5. While startVal < stringVal.Length
    6. If startVal + lenVal <= stringVal.Length Then
    7. retVal.Add(stringVal.Substring(startVal, lenVal))
    8. Else
    9. retVal.Add(stringVal.Substring(startVal, stringVal.Length - startVal))
    10. End If
    11. startVal += lenVal
    12. End While
    13. Return retVal
    14. End Function


    @Roberto So was:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim txt = "01234567890123456789012345678901234567890123"
    3. Do While txt.Length > 0
    4. Dim len = Math.Min(txt.Length, 10)
    5. Dim txt2 = txt.Substring(0, len)
    6. ListBox1.Items.Add(txt2)
    7. txt = txt.Substring(len)
    8. Loop
    9. 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!