


Pseudocode für die rekursive Lösung:

Funktion WordWrap (inputString, Breite)
    Trimmen Sie die Eingabezeichenfolge von führenden und abschließenden Leerzeichen.

    Wenn die Länge der abgeschnittenen Zeichenkette <= die Breite ist,
        Gibt die beschnittene Zeichenfolge zurück.
    Sonst,
        Suchen Sie den Index des letzten Leerzeichens in der beschnittenen Zeichenfolge, beginnend mit der Breite

        Wenn keine Leerzeichen vorhanden sind, verwenden Sie die Breite als Index.

        Teilen Sie die beschnittene Zeichenfolge am Index in zwei Teile auf.

        Trimmen Sie nachlaufende Leerzeichen aus dem Teil vor dem Index,
        und führende Leerzeichen aus dem Teil nach dem Index.

        Verkettung und Rückkehr:
          der beschnittene Teil vor dem Index,
          einen Zeilenumbruch,
          und das Ergebnis des Aufrufs von WordWrap auf dem beschnittenen Teil nach
            den Index (mit der gleichen Breite wie der ursprüngliche Aufruf).

Es wird nur an Leerzeichen umgebrochen, und wenn Sie eine Zeichenfolge umbrechen möchten, die bereits Zeilenumbrüche enthält, müssen Sie sie an den Zeilenumbrüchen auftrennen, jedes Stück an diese Funktion senden und dann die Zeichenfolge wieder zusammensetzen.

Ein erster Versuch - ohne Rekursion:

Public Sub Button1_Click()

  Dim sBook As String = File.Load("/home/hans/test.txt")
  Print LikeWrap(sBook, 60)

End

Private Function LikeWrap(value As String, char As Integer) As String

  Dim ss As String[] = Split(value, " \n", Null, True)
  Dim s, sLine, sOldLine, sTotal As String

  For Each s In ss
    sOldLine = sLine
    sLine &= s & " "
    If String.Len(sLine) > char Then
      sTotal &= Trim(sOldLine) & "\n"
      sLine = s & " "
    Endif
  Next
  Return sTotal

End
