string.Format permette di formattare un numero (o in genere un oggetto qualsiasi che implementi la conversione in stringa) come si vuole aggiungendo per esempio i separatori delle migliaia o un numero prefissato di numeri dopo la virgola.
Identifica l’elemento dell’array object[] di cui si sta definendo il formato.
Per esempio
string.Format("Nome: {2}. Cognome: {0}", new string[]{"Bellini", "Sig." ,"Giacomo"}) --> "Nome: Giacomo. Cognome: Bellini"
Definisce l’allineamento e la lunghezza minima dell’output.
Se il dato in input è più corto della lunghezza minima specificata, la differenza viene colmata con degli spazi.
Se il valore è positivo il testo viene allineato a destra. Se è negativo verrà allineato a sinistra.
string.Format("{0,-8}", "ABC") --> "ABC "
string.Format("{0,8}", "ABC") --> " ABC"
Specifica il formato da applicare.
Si possono usare dei formati predefiniti che sono:
per maggiori informazioni cercare “Standard Numeric Format Strings” in MSDN Library.
Altrimenti si possono creare formati custom secondo le esigenze. Sapendo che la virgola (,) rappresenta sempre il separatore delle migliaia e il punto (.) rappresenta sempre il separatore decimale, prendiamo {0:#,#.###}: i cancelletti (#) sono dei segnaposto per le cifre. Se per i valori interi (quelli a sinistra del punto) indicano solo che vogliamo vedere le cifre, per i valori decimali imposta anche quante cifre significative vogliamo vedere al massimo (in questo caso 3):
string.Format("{0:#,#.###}", (double)1234567.898765) --> "1.234.567,899"
Il separatore delle migliaia viene messo perché abbiamo inserito la virgola tra due cancelletti. Se non li vogliamo in output è sufficiente scrivere:
string.Format("{0:#.###}", (double)1234567.898765) --> "1234567,899"
Con questi formati non stiamo specificando un numero minimo di cifre significative. Quindi nel caso il valore da formattare sia 0 (zero) avremo in output una stringa vuota.
Inserendo invece uno carattere al posto di un cancelletto segnaposto indichiamo che vogliamo che in assenza di cifre significative venga mostrato quel carattere:
string.Format("{0:#,0.###}", (double)0) --> "0"
string.Format("{0:#,0.0##}", (double)0) --> "0,0"
Se vogliamo che ci siano comunque per esempio tre decimali, basta sostituire tutti i cancelletti con degli zeri:
string.Format("{0:#,0.000}", (double)25.6) --> "25,600"
Lo stesso possiamo farlo per le cifre intere, per esempio per completare un codice di 5 caratteri con degli zeri:
string.Format("{0:00000}", (double)25) --> "00025"
Per scrivere le parentesi graffe aperte o chiuse {} nella stringa risultante le dobbiamo raddoppiarle: {{ o }}. Vengono altrimenti riconosciute come l'inizio della definizione di un nuovo formato.