web-dev-qa-db-fra.com

Comment formater un nombre en une chaîne avec des zéros non significatifs?

J'ai un nombre que je dois convertir en chaîne. J'ai d'abord utilisé ceci:

Key = i.ToString();

Mais je me rends compte que le tri est effectué dans un ordre étrange et que je dois donc le compléter avec des zéros. Comment pourrais-je faire ça?

221
Mandy Weston

Plutôt simple:

Key = i.ToString("D2");

D signifie "nombre décimal", 2 pour le nombre de chiffres à imprimer.

314
Mario

Voir Formatage de chaîne en C # pour quelques exemples d'utilisation de String.Format

En fait, un meilleur exemple de formating int

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

ou utilisez String Interpolation :

$"{15:00000}";                           // "00015"
185
Paul

Si vous souhaitez conserver une largeur fixe, par exemple 10 chiffres, procédez comme suit

Key = i.ToString("0000000000");

Remplacez par autant de chiffres que vous le souhaitez.

i = 123 donnera alors Key = "0000000123".

65
Øyvind Bråthen

Puisque personne n'a encore mentionné cela, si vous utilisez la version 6 ou plus de C # (Visual Studio 2015), vous pouvez utiliser interpolation de chaîne pour simplifier votre code. Donc, au lieu d'utiliser string.Format(...), vous pouvez simplement faire ceci:

Key = $"{i:D2}";
58
DavidG

utilisation:

i.ToString("D10")

Voir Int32.ToString (MSDN) et Chaînes de format numérique standard (MSDN).

Ou utilisez String.PadLeft. Par exemple,

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

Cela donnerait 0000000321. Bien que String.PadLeft ne fonctionne pas pour les nombres négatifs.

Voir String.PadLeft (MSDN).

30
firefox1986

Habituellement, String.Format ("format", objet) est préférable à object.ToString ("format"). Donc,

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

est préférable à,

Key = i.ToString("000000");
14
Chameera Dedduwage

Essayer:

Key = i.ToString("000000");

Personnellement, cependant, je verrais si vous ne pouvez pas trier directement sur l'entier, plutôt que sur la représentation sous forme de chaîne.

13
Marc Gravell

Ici, je veux que mon nombre ne soit pas limité à 4 chiffres, comme s'il était 1, il devrait indiquer 0001, s'il était 11, il devait indiquer 0011..Vous trouverez ci-dessous le code.

        reciptno=1;//Pass only integer.

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

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

J'ai implémenté ce code pour générer le reçu Money no.

3
saktiprasad swain

Pour les chaînes interpolées:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
1
Alan Samet
int num=1;
string number=num.ToString().PadLeft(4, '0')

Sortie = "00001"

EDIT: modifié pour correspondre au montant PadLeft