Können die maximale Anzahl von Zeichen definiert werden, die in C# format-strings wie in C printf?
Nicht finden, wie zu tun. Was ich fand, war mehr oder weniger auf die Linien (http://blog.stevex.net/string-formatting-in-csharp/):
Es ist wirklich nicht jede Formatierung in einen string zu, neben der Ausrichtung. Ausrichtung funktioniert für jedes argument, das gedruckt wird, in eine Zeichenfolge.Format aufrufen.
Probe Erzeugt
String.Format(“->{1,10}<-”, “Hello”); //gives "-> Hello<-" (left padded to 10)
String.Format(“->{1,-10}<-”, “Hello”); //gives "->Hello <-" (right padded to 10)
Was genau wollen Sie erreichen? Können Sie Beispiele von dem, was Sie sehen möchten?
ich bin versucht zu konvertieren von C-format-Zeichenfolgen zu C# format-strings. in C können Sie angeben, %-4.4 s und ähnliche.
warum nach unten Stimmen? dies ist die essentielle Frage!
und noch wichtiger ist, wenn nicht ein Fehler im C# - format-string-design.
Ich würde nicht nennen es ein - Fehler. Es ist eher so, dass die spezifische Funktion, die Sie suchen ist nicht verfügbar. String.Format unterstützt auch mehrere Funktionen nicht im C format-strings. Bedeutet das, dass die C ' format-strings sind zwangsläufig fehlerhaft?
ich bin versucht zu konvertieren von C-format-Zeichenfolgen zu C# format-strings. in C können Sie angeben, %-4.4 s und ähnliche.
warum nach unten Stimmen? dies ist die essentielle Frage!
und noch wichtiger ist, wenn nicht ein Fehler im C# - format-string-design.
Ich würde nicht nennen es ein - Fehler. Es ist eher so, dass die spezifische Funktion, die Sie suchen ist nicht verfügbar. String.Format unterstützt auch mehrere Funktionen nicht im C format-strings. Bedeutet das, dass die C ' format-strings sind zwangsläufig fehlerhaft?
InformationsquelleAutor char m | 2010-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wollen, ist nicht "nativ" unterstützt C# string-Formatierung wie die
String.ToString
Methoden des string-Objekts nur den string selbst.Beim Aufruf
wenn someobject implementiert die IFormattable-Schnittstelle, die überlastung ToString(string format,IFormatProvider formatProvider) Methode wird aufgerufen, mit "xxx" als
format
parameter.So, bei den meisten ist dies nicht ein Fehler im design .NET-string-Formatierung, sondern einfach nur fehlende Funktionalität in der string-Klasse.
Wenn Sie wirklich brauchen, können Sie mit einem der vorgeschlagenen workarounds, oder erstellen Sie Ihre eigenen Klasse die IFormattable-Schnittstelle.
kein xxx war nur ein Beispiel. Tatsächlich, was es bedeutet, entscheidet sich durch die Umsetzung die IFormattable-Schnittstelle. Jedenfalls (sprechen wie ein c++ - Liebhaber), string Formatierung in c++ ist im Vergleich zu dem in c# Scheiße, sprechen von einem Fehler für die Tatsache, dass diese Besonderheit ist fehlen scheint ziemlich seltsam zu mir 😉
InformationsquelleAutor Paolo Tedesco
Ich geschrieben habe, eine benutzerdefinierte formatter implementiert, dass ein "L" - Formatbezeichner verwendet, um die maximale Breite. Dies ist nützlich, wenn wir brauchen, um die Kontrolle der Größe der formatierten Ausgabe sagen, wenn bestimmt für eine Spalte in der Datenbank-oder CRM-Bereich.
Nutzung ist
InformationsquelleAutor Doug Wiley
Dies ist nicht eine Antwort, wie die Verwendung von string.format, sondern ein anderer Weg, die Verkürzung ein string mit extension-Methoden. Auf diese Weise können Sie die maximale Länge der string direkt, auch ohne string.format.
Beispiel für die Nutzung:
InformationsquelleAutor Andy
Kannst du nicht einfach die Länge Argumente, die den parameter verwenden, anstatt das format?
String.Format("->{0}<-", toFormat.PadRight(10)); //->Hallo <-
Oder schreiben Sie Ihre eigenen formatter, um Ihnen zu erlauben, dies zu tun?
InformationsquelleAutor Ian Johnson
Warum nicht einfach Substr, beschränken Sie die Länge der Zeichenfolge?
Ich vermisste die Tatsache, dass selbst Substr hat ein paar unangenehme Umsetzung unterscheidet sich von jeder anderen Sprache. Ich habe diesen workaround, wie es ist und es schlägt fehl, wenn der string kürzer ist als 10 Zeichen...
InformationsquelleAutor Moo-Juice