84 votes

Remplir avec des zéros de tête

Comment puis-je compléter ma variable entière avec des zéros de tête. Par exemple, j'ai un entier abc avec la valeur 20 mais je veux qu'il soit '0000020'.

Code :

quarterlyReportDataCMMS.QRTrailerRecord.FileRecordCount = Convert.ToInt32(refEligibleClaimants.Count);

146voto

Jon Skeet Points 692016

Il n'y a pas de concept tel qu'un nombre entier avec remplissage. Combien de jambes avez-vous - 2, 02 ou 002 ? Ce sont les mêmes nombres. En fait, même la partie "2" ne fait pas vraiment partie du nombre, elle n'est pertinente que dans la représentation décimale.

Si vous avez besoin de rembourrage, cela suggère que vous parlez de la représentation textuelle d'un nombre... c'est-à-dire d'une chaîne de caractères.

Vous pouvez y parvenir en utilisant les options de formatage des chaînes de caractères, par ex.

string text = value.ToString("0000000");

ou

string text = value.ToString("D7");

0 votes

J'ai essayé mais le message suivant s'affiche : "Impossible de convertir implicitement le type string en int".

4 votes

@Ashutosh : Non, le point est vous veulent comme une chaîne de caractères. Il n'y a pas de concept tel que celui d'un int padded - un int est juste un numéro .

2 votes

@Jon mais votre code essaie de convertir implicitement une chaîne de caractères en un int... ( int text = value.ToString("000") )

132voto

nukefusion Points 3688

Vous pouvez le faire avec un type de données de type chaîne. Utilisez l'option PadLeft méthode :

var myString = "1";
myString = myString.PadLeft(myString.Length + 5, '0');

000001

40 votes

Sinon, si vous voulez un nombre fixe de places où 5 est le nombre total de places remplacé par 0 : myString.PadLeft(5, '0')

0 votes

Bien que cette réponse soit utile, ce n'est pas la façon de procéder, sauf si vous commencez avec une chaîne de caractères.

17voto

SLaks Points 391154

Une valeur entière est la représentation mathématique d'un nombre et ne tient pas compte des zéros de tête.

Vous pouvez obtenir un chaîne de caractères avec des zéros en tête, comme ceci :

someNumber.ToString("00000000")

15voto

James Curran Points 55356

Le concept de zéro en tête n'a pas de sens pour un int, qui est ce que vous avez. Il n'a de sens que lorsqu'il est imprimé ou rendu sous la forme d'une chaîne de caractères.

Console.WriteLine("{0:0000000}", FileRecordCount);

J'ai oublié de terminer les guillemets !

14voto

quantumSoup Points 6565

Vous pouvez utiliser

String.PadLeft()
String.Format()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X