2010-08-26 10 views

Antwort

4

Nein, String.Format nicht den Stern Betreiber unterstützen. Sie müssten entweder String-Verkettung s

Console.WriteLine(String.Format("{{0:D{0}}}", 4), 1); 
2

Ja, das ist möglich. Sie müssen nur die Genauigkeitsnummer nach dem Formatspezifizierer hinzufügen. Zum Beispiel

Console.WriteLine("{0:D4}",1); // Outputs 0001; 

Was der Präzisionsmodifikator tut, ist jedoch spezifisch für den gewählten Formattyp. In diesem Fall steht das D für die Dezimalausgabe. Hier ist ein Link zu den Arten von numerischen Formaten und was die Präzision für jede von ihnen bedeutet.

+0

Nein, was ich will ist: Console.WriteLine ("{0: D *}", 1,4); // Gibt 0001 aus; – Sprintstar

+0

Also dann ist die Antwort auf Ihre Frage Nein, @Sprintstar, C# implementiert ähnliche Syntax mit der gleichen Funktionalität. –

4

Formatierung der Formatstring

Console.WriteLine("{0:D" + myPrecision.ToString() + "}",1); 

oder String.Format verschachtelt verwenden, sollte es tun:

var number = 1; 
var width = 4; 
Console.WriteLine(String.Format("{{0:D{0}}}", width), number); 

Es wird ausgegeben 0001.

Beachten Sie, wie {{ und }} verwendet werden { und } in einem Format-String zu entkommen.

+2

+1 zur Erläuterung der Syntax von Escaping-Klammern. – Heinzi

0

Formatieren einer Zeichenfolge, die für die angegebene Länge linksbündig formatiert ist.

int len = 20; 
string fmt = string.Format("{{0,-{0}}}", len); 
string name = string.Format(fmt, "a persons name"); 

oder

name.PadRight(len); 

Das Ergebnis sollte ein Name sein, der auf der rechten Seite für eine Gesamtlänge von 20 Zeichen aufgefüllt wird.

1

Meine Problemumgehung ähnelt der Implementierung von QString::arg() durch Qt. Ich habe nur einen Platzhalter gesetzt und dann durch den Wert numericPrecision ersetzt.

numericPrecision = "N2"; 
var summary = string.Format(
    "{0}: {1:_np_}, {2}: {3:_np_}, {4}: {5:_np_}".Replace("_np_", numericPrecision), 
    title1, value1, 
    title2, value2, 
    title3, value3);