Ho un numero che devo convertire in una stringa. Prima ho usato questo:
Key = i.ToString();
Ma mi rendo conto che è stato ordinato in uno strano ordine e quindi ho bisogno di riempirlo con zeri. Come potrei farlo?
Ho un numero che devo convertire in una stringa. Prima ho usato questo:
Key = i.ToString();
Ma mi rendo conto che è stato ordinato in uno strano ordine e quindi ho bisogno di riempirlo con zeri. Come potrei farlo?
Risposte:
Piuttosto semplice:
Key = i.ToString("D2");
D
sta per "numero decimale", 2
per il numero di cifre da stampare.
string.Format("D2", value)
otterrai D2
l'output. questo non funziona. Dobbiamo usare "{0:00}"
in questo caso.
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.
value
è un int. Se value
è un doppio, per esempio, dovrà esserestring.Format("{0:00}", value)
Vedi Formattazione delle stringhe in C # per alcuni esempi di utilizzo di String.Format
In realtà un esempio migliore di formattazione int
String.Format("{0:00000}", 15); // "00015"
o usa Interpolazione stringa :
$"{15:00000}"; // "00015"
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 = 123
si tradurrà quindi in Key = "0000000123"
.
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}";
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.PadLeft
non funzionerebbe con numeri negativi.
Vedi String.PadLeft (MSDN).
Di solito String.Format ("formato", oggetto) è preferibile a object.ToString ("formato"). Perciò,
String.Format("{0:00000}", 15);
è preferibile a,
Key = i.ToString("000000");
Provare:
Key = i.ToString("000000");
Personalmente, però, vedrei se non puoi ordinare direttamente sull'intero, piuttosto che sulla rappresentazione di stringa.
Per stringhe interpolate:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
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.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Uscita = "00001"
EDIT: modificato per corrispondere all'importo PadLeft