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.