Ermöglicht die .NET String.Format-Methode die Platzierung eines Strings an einer festen Position innerhalb eines Strings mit fester Länge?
"String Goes Here" "String Goes Here" "String Goes Here"
Wie geht das mit .NET?
Bearbeiten - Ich habe Format / PadLeft / PadRight zu Tode versucht. Sie arbeiten nicht. Ich weiß nicht warum. Am Ende schrieb ich meine eigene Funktion, um dies zu tun.
Bearbeiten - Ich habe einen Fehler gemacht und im Formatbezeichner einen Doppelpunkt anstelle eines Kommas verwendet. Sollte "{0,20}" sein.
Vielen Dank für all die hervorragenden und richtigen Antworten.
Antworten:
Dadurch erhalten Sie genau die Zeichenfolgen, nach denen Sie gefragt haben:
quelle
,
nicht:
wie in allen anderen Formatierungsverfahren verwendet?Zumindest der erste und der letzte sind mit der folgenden Syntax möglich:
quelle
Ab Visual Studio 2015 können Sie dies auch mit interpolierten Zeichenfolgen tun (dies ist ein Compilertrick, sodass es keine Rolle spielt, auf welche Version des .net-Frameworks Sie abzielen).
quelle
Du wurdest gezeigt
PadLeft
undPadRight
. Dies wird die fehlenden ausfüllenPadCenter
.Hinweis für sich selbst: Vergessen Sie nicht, Ihren eigenen Lebenslauf zu aktualisieren: "Eines Tages habe ich sogar Joel Coehoorns Code repariert!" ;-D -Serge
quelle
Versuche dies:
Für die Mitte erhalten Sie die Länge der Zeichenfolge und machen Padleft und Padright mit den erforderlichen Zeichen
quelle
String.Format("{0,-length}", something)
dh nicht kompiliert werden.Vielen Dank für die Diskussion, diese Methode funktioniert auch (VB):
Hier ist die C # -Version:
Zum besseren Verständnis wird das Integer der Ganzzahlvariablen firstpad verwendet. s.PadLeft (firstpad) wendet die (richtige Anzahl) führender Leerzeichen an. Das PadRight ganz rechts (gewünschte Länge) hat eine niedrigere Bindung, die durch Anwenden von nachgestellten Leerzeichen abgeschlossen wird.
quelle
Hier ist eine VB.NET-Version, die ich erstellt habe, inspiriert von Joel Coehoorns Antwort, Olivers Bearbeitung und Shaunmartins Kommentar:
Dies wird als Zeichenfolgenerweiterung in einem öffentlichen Modul eingerichtet (wie Sie Erweiterungen in VB.NET ausführen, etwas anders als in C #). Meine geringfügige Änderung besteht darin, dass eine Nullzeichenfolge als leere Zeichenfolge behandelt wird und eine leere Zeichenfolge mit dem Breitenwert aufgefüllt wird (entspricht meinen speziellen Anforderungen). Hoffentlich kann dies für jeden, der es benötigt, leicht in C # konvertiert werden. Wenn es eine bessere Möglichkeit gibt, auf die oben erwähnten Antworten, Änderungen und Kommentare zu verweisen, die meinen Beitrag inspiriert haben, lassen Sie es mich bitte wissen und ich werde es tun - ich bin relativ neu im Posten und konnte es nicht herausfinden Hinterlasse einen Kommentar (möglicherweise noch nicht genügend Wiederholungen).
quelle
Ich habe einen CodeProject-Artikel veröffentlicht, der genau Ihren Wünschen entspricht.
Siehe: AC # Weg für indirekte Breite und Stil Formatierung.
Grundsätzlich handelt es sich um eine Methode, FormatEx, die sich wie String.Format verhält, außer dass sie einen Modifikator für die zentrierte Ausrichtung zulässt.
Bedeutet, den Wert von varArgs [0] in einem 10 Zeichen breiten Feld zu zentrieren und nach rechts zu lehnen, wenn ein zusätzlicher Auffüllraum erforderlich ist.
Bedeutet, dass der Wert von varArgs [0] in einem 10 Zeichen breiten Feld zentriert wird. Lehnen Sie sich nach links, wenn ein zusätzlicher Platz zum Auffüllen erforderlich ist.
Bearbeiten: Intern ist es eine Kombination aus Joels PadCenter mit einer Analyse, um das Format und varArgs für einen Aufruf von String.Format neu zu strukturieren, der genau das tut, was Sie wollen.
-Jesse
quelle
Es scheint, als ob Sie so etwas wollen, das Ihre Zeichenfolge an einem festen Punkt in einer Zeichenfolge konstanter Länge platziert:
Beachten Sie, dass dies Probleme verursachen wird, wenn mystring.length + leftbuffer die Gesamtlänge überschreitet
quelle
quelle