Der Code passt auch nicht zu Deinem gesagten.
Wenn Du Deine Aufgabe nicht klar verstehst, dann mal diese zunächst Schrittweise auf ein Papier auf - und dann programmiere Stück für Stück die einzelnen Schritte aus.
Genau das hab ich jetzt einfach mal gemacht:
static void Main(string[] args)
{
string text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";
string blockformat = TextExtensions.Blockformat(text, 72);
Console.WriteLine(blockformat);
Console.ReadKey();
}
public static class TextExtensions
{
public static string Blockformat(string source, int maxCharsPerLine)
{
string input = source;
string result = "";
while (input != "")
{
// trim line
string subText = input.Substring(0, Math.Min(maxCharsPerLine, input.Length)).Trim();
// letzter space im text suchen
int lastSpacePosition = subText.LastIndexOf(" ");
if (lastSpacePosition == -1)
{
// kein space enthalten
result += subText + Environment.NewLine;
}
else
{
// space gefunden
// subtext trimmen
subText = input.Substring(0, lastSpacePosition + 1);
// subtext in das result kippen
result += subText + Environment.NewLine;
}
// input um subtext verringern
input = input.Substring(subText.Length);
}
return result;
}
}
Das macht im Endeffekt genau das in der Form, wie Du es beschrieben hast - anders als Dein Code, der eben nicht zur Beschreibung passt.
Ich bin sicher, dass mein Code nicht jeden potentiellen Fall abdeckt; aber er zeigt minimalst, dass man einfach genau das ausprogrammieren muss, was man selbst beschreibt.