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");
Dsignifie "nombre décimal", 2pour le nombre de chiffres à imprimer.
string.Format("D2", value)vous obtiendrez D2la 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é.
valueest un int. Si valuec'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 = 123se 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.PadLeftne 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