C # converti int in stringa con zeri di riempimento?


Risposte:


709

i.ToString().PadLeft(4, '0')- va bene, ma non funziona con numeri negativi
i.ToString("0000");- forma esplicita - identificatore di formato
i.ToString("D4");breve
$"{i:0000}";- interpolazione di stringhe (C # 6.0+)


28
i.ToString (). PadLeft (4, '0') NON funziona con numeri negativi, ad esempio (-5) .PadLeft (4, '0') sarà "00-5"
Antonio Bakula,

5
come visualizzare una stringa con lunghezza fissa. ??
Mark Macneil Bikeio,


2
in questo modo ha funzionato per me String.Format ("{0: D4}", numero);
Arthur Melo,

14
L'uso del collegamento al formato String funziona anche ad esempio $ "{i: D4}";
JamesSugrue,


118

Ecco un buon esempio:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well

66

Puoi usare:

int x = 1;
x.ToString("0000");

26
E un secondo modo di usare la stessa stringa di formato:string.Format("{0:0000}", x)
Yodan Tauber

57

Interpolazione di stringhe di stile C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";

Questo sembra molto carino. Buon modo per evitare$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin,


4

Vai tranquillo

int i = 1;
i.ToString("0###")

3
non so perché tu abbia votato perché funziona e risponde alla domanda operativa
maeneak


2

.NET ha una funzione semplice per farlo nella Stringclasse. Usa solo:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  

Funziona se hai una lunghezza fissa della stringa con un numero che cambia. Grazie per questo! :)
Fen Ignacio,

0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055

0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);

-2

Qui voglio riempire il mio numero con 4 cifre. Ad esempio, se è 1, dovrebbe essere visualizzato come 0001, se 11 dovrebbe essere visualizzato come 0011.

Di seguito è riportato il codice che compie questo:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Ho implementato questo codice per generare il numero di ricevuta del denaro per un file PDF.


1
Perché stai modificando la mia risposta solo alla lettera maiuscola o alla struttura della frase. È necessario? Uno sviluppatore dovrebbe avere preoccupazione per il codice e non per la struttura della frase
saktiprasad swain,

@Unheilig Sono nuovo di StackOverflow. Penso che il mio punto si riduca quando modifichi la mia risposta.
saktiprasad swain,

3
Come fai notare, sei nuovo in questa comunità e non hai familiarità con il sistema di modifica, non hai perso punti rispetto alla modifica proposta e approvata dalla comunità. Le modifiche apportate hanno effettivamente migliorato in modo significativo la tua risposta
segugio della sicurezza,

1
Il voto è in realtà anonimo. Il downvote è stato emesso a causa della scarsa grammatica. Avrebbe votato se avessi accettato la proposta di modifica
Segugio di sicurezza


-5

Per int ieseguire il pad in modo che corrisponda alla lunghezza della stringa di int x, quando entrambi possono essere negativi:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

2
Confusione inutile soprattutto quando esiste una soluzione molto semplice.
Juls
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.