Stellen Sie Die Konsole.WriteLine() wrap Wörter statt Buchstaben
Mit Console.WriteLine()
dieses it-Ausgang:
Ich soll es wie folgt Aussehen automatisch, statt manuell setzen in \n
wo immer es benötigt wird:
Ist das möglich? Wenn ja, wie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte dies funktionieren, kann es zwar wahrscheinlich gekürzt werden, einige mehr:
Es ist vielleicht schwer zu verstehen, so dass im Grunde, was das bedeutet:
Trim()
entfernt Leerzeichen am Anfang und am Ende.Die
Regex()
ersetzt mehrfache Leerzeichen mit nur einem Leerzeichen.Die
for
Schleife nimmt der erste (Konsolen.WindowWidth - 1) Zeichen aus der Absatz-und setzt es als eine neue Zeile.Die " LastIndexOf()1 versucht zu finden, dass der Letzte Platz in der Zeile. Wenn es nicht ein, es verlässt die Linie, wie es ist.
Diese Zeile wird entfernt aus dem Absatz und die Schleife wiederholt wird.
Hinweis: Die regex genommen wurde,hier.
Anmerkung 2: ich glaube nicht, dass es ersetzt tabs.
Hier ist eine Lösung, die die Arbeit mit Tabulatoren, Zeilenumbrüche und andere whitespace-Zeichen.
Dieser wird in einen string und gibt eine Liste von strings, die jeweils nicht länger als 80 Zeichen):
Beginnend mit diesem
text
:Bekomme ich dieses Ergebnis:
foreach(var line in lines) yield return line;
zu Ende, wenn die Umhüllung das in einer Funktion.lines
.Aggregate
gibt eine LINQ IEnumerable. Rückkehr Linien ist nicht nur gleichwertig, es ist etwas mehr optimiert.Codiert in ein paar Minuten, es wird tatsächlich brechen mit Worten, die mehr als 80 Zeichen ist und nicht berücksichtigen, die
Console.WindowWidth
Es ist auch nicht sehr optimiert auf CPU und Arbeitsspeicher. Ich würde nicht verwenden Sie diese in jedem ernsthaften Kontext.
String line = buffer.ToString().Substring(0, buffer.Length - word.Length);
Können Sie CsConsoleFormat† zu schreiben, die strings auf die Konsole mit word-wrap. Es ist eigentlich die Standard-text-Umbruch-Modus (kann aber geändert werden, um Zeichen wickeln oder nicht wickeln).
Können Sie auch eine aktuelle Liste mit Marge für zahlen:
Hier ist, wie es aussieht:
† CsConsoleFormat wurde von mir entwickelt wurde.
Wenn Sie ein Wort (wie ein Pfad) größer als die Bildschirmbreite, Sie muss auch den Zeilenumbruch.
Seine bereits umgesetzt Colorify - C# NETCore Console-Bibliothek mit Text Format: Farben, Ausrichtung und viel mehr [ für Win, Mac & Linux ]
Sollten Sie wahrscheinlich in der Lage sein zu nutzen Console.WindowWidth mit einigen look-ahead-newline Logik, um dies zu verwirklichen.
Console.BufferWidth
möglicherweise die bessere Wahl, je nachdem, was Sie versuchen zu erreichen.