2010-08-26 11 views

risposta

4

No, String.Format non supporta l'operatore stella. Avresti bisogno di utilizzare concatenazione di stringhe

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

o nidificato String.Format s

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

Sì questo è possibile. Hai solo bisogno di aggiungere il numero di precisione dopo l'identificatore di formato. Ad esempio

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

Ciò che il modificatore di precisione fa è specifico per il tipo di formato scelto. In questo caso la D sta per uscita decimale. Ecco un link ai tipi di formati numerici e cosa significa la precisione per ciascuno di essi.

+0

No, quello che voglio è: Console.WriteLine ("{0: D *}", 1,4); // Output 0001; – Sprintstar

+0

Quindi la risposta alla tua domanda è no, @Sprintstar, C# implementa una sintassi simile con la stessa funzionalità. –

4

formattazione della stringa di formato dovrebbe fare il trucco:

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

Sarà uscita 0001.

Notate come {{ e }} sono utilizzati per sfuggire { e } in una stringa di formato.

+2

+1 per spiegare la sintassi delle parentesi di escape. – Heinzi

0

Per formattare una stringa che è giustificata a sinistra per la lunghezza specificata.

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

o

name.PadRight(len); 

Il risultato dovrebbe essere un nome che è imbottito sulla destra per una lunghezza totale di 20 caratteri.

1

La mia soluzione è simile a come Qt implementa QString::arg(). Ho appena inserito un segnaposto e poi lo ho sostituito con il valore di numericPrecision.

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