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?
Plutôt simple:
Key = i.ToString("D2");
D
signifie "nombre décimal", 2
pour le nombre de chiffres à imprimer.
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"
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"
.
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}";
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).
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");
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.
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.
Pour les chaînes interpolées:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
int num=1;
string number=num.ToString().PadLeft(4, '0')
Sortie = "00001"
EDIT: modifié pour correspondre au montant PadLeft