Come posso formattare un numero in una stringa con zeri iniziali?


Risposte:


344

Piuttosto semplice:

Key = i.ToString("D2");

Dsta per "numero decimale", 2per il numero di cifre da stampare.


7
se usi string.Format("D2", value)otterrai D2l'output. questo non funziona. Dobbiamo usare "{0:00}"in questo caso.
— v.oddou,

42
Dovresti usare string.Format("{0:D2}", value)invece. Il solo dire string.Format("D2", ...)non sostituirà nulla, qualunque cosa accada dal momento che non hai un segnaposto.
— infinitypanda,

5
@infinitypanda si rende conto che funzionerà solo quando valueè un int. Se valueè un doppio, per esempio, dovrà esserestring.Format("{0:00}", value)
— derekantrican il

se stiamo parlando di "cifre iniziali", penso che la risposta sarebbe i.ToString ("00"); dove "00" rappresenta gli zeri iniziali .. puoi aumentare questo importo il più possibile.
— Dedan,


72

Se ti piace mantenere la larghezza fissa, ad esempio 10 cifre, fallo in questo modo

Key = i.ToString("0000000000");

Sostituisci con tutte le cifre che desideri.

i = 123si tradurrà quindi in Key = "0000000123".


63

Poiché nessuno lo ha ancora menzionato, se si utilizza C # versione 6 o successiva (ad esempio Visual Studio 2015), è possibile utilizzare l'interpolazione di stringhe per semplificare il codice. Quindi, invece di utilizzare string.Format(...), puoi semplicemente fare questo:

Key = $"{i:D2}";

33

uso:

i.ToString("D10")

Vedere Int32.ToString (MSDN) e Stringhe di formato numerico standard (MSDN).

Oppure usa String.PadLeft. Per esempio,

int i = 321;
Key = i.ToString().PadLeft(10, '0');

Ne deriverebbe 0000000321. Sebbene String.PadLeftnon funzionerebbe con numeri negativi.

Vedi String.PadLeft (MSDN).


4
Immagino che ti farà fregare una volta che provi a usarlo con numeri negativi.
— Mario

Grazie - ho usato il secondo. Ho lasciato fuori il ".ToString ()" - funziona ancora.
— Sunsetquest

14

Di solito String.Format ("formato", oggetto) è preferibile a object.ToString ("formato"). Perciò,

String.Format("{0:00000}", 15);  

è preferibile a,

Key = i.ToString("000000");

4
Sì, come ha chiesto @cja, perché è preferibile? E non sto litigando contro l'affermazione, vorrei sapere perché.
— Christopher King,

La prima sintassi "sembra" più precisa, prevedibile e chiara. E sarebbe meglio indicato come Key = String.Format ("{0: 00000}", 15); che viene confrontato con Key = i.ToString ("000000"); Con la prima sintassi, sono abbastanza sicuro di sapere esattamente il risultato che otterrò, e se per caso ho un carattere fuori, so esattamente cosa cambiare (formato stringa. Quindi, in breve, per me è preferibile preferenza personale emotiva, debolmente supportata da una mezza ragione quasi plausibile ;-) Quindi si decide allora?
— Developer63

13

Provare:

Key = i.ToString("000000");

Personalmente, però, vedrei se non puoi ordinare direttamente sull'intero, piuttosto che sulla rappresentazione di stringa.


7

Per stringhe interpolate:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"

3

Qui voglio che il mio no si limiti a 4 cifre come se fosse 1, dovrebbe mostrare come 0001, se 11 dovrebbe mostrare come 0011 ... Di seguito è il codice.

        reciptno=1;//Pass only integer.

        string formatted = string.Format("{0:0000}", reciptno);

        TxtRecNo.Text = formatted;//Output=0001..

Ho implementato questo codice per generare la ricevuta di denaro n.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.