String in mehrere Zeilen splitten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    String in mehrere Zeilen splitten

    Guten Abend,
    ich habe folgendes Problem:
    Ich habe einen Text, der vom User eingegeben wird und dadurch eventuell zu lang wird.
    Deshalb möchte ich, dass er, sobald er mehr als 27 Buchstaben/Zahlen hat, gesplittet wird in eine neue Zeile.
    Das ganze geht in der nächsten Zeile weiter, dort sind aber 32 Buchstaben/Zahlen Platz und es gibt noch eine 3. Zeile mit ebenfalls 32 Platz.
    Habe schonmal einen Ansatz.

    VB.NET-Quellcode

    1. If title.Length > 27 Then
    2. '...
    3. End If


    Vielen Dank.
    @Developement Sieh Dir mal diesen Ansatz an:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim txt = TextBox1.Text
    3. Dim ll = New List(Of String)
    4. Do While txt.Length > 10
    5. Dim txt2 = txt.Substring(0, 10)
    6. txt = txt.Substring(10)
    7. ll.Add(txt2)
    8. Loop
    9. If Not String.IsNullOrEmpty(txt) Then
    10. ll.Add(txt)
    11. End If
    12. Me.TextBox2.Lines = ll.ToArray()
    13. 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!
    Idee:

    VB.NET-Quellcode

    1. Dim lines As New List(Of String)
    2. Dim i, pos, len As Int32
    3. While pos < title.Length AndAlso i < 3 ' Nur solange Zeichen vorhanden und maximal 3 Zeilen
    4. If i = 0 Then
    5. len = CInt(Math.Min(title.Length - pos, 27))
    6. lines.Add(title.Substring(pos, len))
    7. pos += 27
    8. Else
    9. len = CInt(Math.Min(title.Length - pos, 32))
    10. lines.Add(title.Substring(pos, len))
    11. pos += 32
    12. End If
    13. i += 1
    14. End While

    Nicht getestet - möglicherweise passt die Länge nicht ganz (+-1).
    Gruß
    hal2000