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 qu'il est trié dans un ordre étrange et je dois donc le remplir avec des zéros. Comment pourrais-je faire ça?
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 qu'il est trié dans un ordre étrange et je dois donc le remplir avec des zéros. Comment pourrais-je faire ça?
Réponses:
Assez simple:
Key = i.ToString("D2");
D
signifie "nombre décimal", 2
pour le nombre de chiffres à imprimer.
string.Format("D2", value)
vous obtiendrez D2
la sortie. ça ne marche pas. Nous devons utiliser "{0:00}"
dans ce cas.
string.Format("{0:D2}", value)
place. Le simple fait de dire string.Format("D2", ...)
ne remplacera rien quoi qu'il en soit puisque vous n'avez pas d'espace réservé.
value
est un int. Si value
c'est un double, par exemple, il devra êtrestring.Format("{0:00}", value)
Voir Formatage de chaînes en C # pour des exemples d'utilisation de String.Format
En fait, un meilleur exemple de formatage int
String.Format("{0:00000}", 15); // "00015"
ou utilisez l' interpolation de chaînes :
$"{15:00000}"; // "00015"
Si vous souhaitez conserver une largeur fixe, par exemple 10 chiffres, faites-le comme ceci
Key = i.ToString("0000000000");
Remplacez par autant de chiffres que vous le souhaitez.
i = 123
se traduira alors par Key = "0000000123"
.
Puisque personne ne l'a encore mentionné, si vous utilisez C # version 6 ou supérieure (c'est-à-dire Visual Studio 2015), vous pouvez utiliser l' interpolation de chaînes 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');
En résulterait 0000000321
. Mais String.PadLeft
ne fonctionnerait pas pour des nombres négatifs.
Voir String.PadLeft (MSDN).
Généralement, String.Format ("format", object) est préférable à object.ToString ("format"). Par conséquent,
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 l'entier plutôt que la représentation de la chaîne.
Pour les chaînes interpolées:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Ici, je veux que mon non limite à 4 chiffres comme s'il était 1, il devrait montrer que 0001, s'il 11, il devrait montrer que 0011.. Ci-dessous sont 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 d'argent no.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Sortie = "00001"
EDIT: modifié pour correspondre au montant PadLeft