C # convertir int en chaîne avec des zéros de remplissage?

Réponses:

709

i.ToString().PadLeft(4, '0')- d'accord, mais ne fonctionne pas pour les nombres négatifs
i.ToString("0000");- forme explicite
i.ToString("D4");- spécificateur de format de forme courte
$"{i:0000}";- interpolation de chaîne (C # 6.0+)

Geai
la source
28
i.ToString (). PadLeft (4, '0') ne fonctionne PAS pour les nombres négatifs, par exemple (-5) .PadLeft (4, '0') sera "00-5"
Antonio Bakula
5
comment afficher une chaîne de longueur fixe. ??
Mark Macneil Bikeio
3
@Rahul Lisez ceci: msdn.microsoft.com/en-us/library/…
Kevdog777
2
cela a fonctionné pour moi String.Format ("{0: D4}", nombre);
Arthur Melo
14
L'utilisation du raccourci au format String fonctionne également, par exemple $ "{i: D4}";
JamesSugrue
275
i.ToString("D4");

Voir MSDN sur les spécificateurs de format.

Ryan
la source
4
cela a fonctionné pour moi String.Format ("{0: D4}", nombre);
Arthur Melo
118

Voici un bon exemple:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well
Denys Wessels
la source
66

Vous pouvez utiliser:

int x = 1;
x.ToString("0000");
Yodan Tauber
la source
26
Et une deuxième façon d'utiliser la même chaîne de format:string.Format("{0:0000}", x)
Yodan Tauber
57

Interpolation de chaînes de style C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr Blowhard
la source
Celui-ci est très joli. Bon moyen d'éviter$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin
18
i.ToString("0000");
Justin Niessner
la source
4

Peasy facile

int i = 1;
i.ToString("0###")
maeneak
la source
3
Je ne sais pas pourquoi vous avez voté, cela fonctionne et répond à la question des opérations
maeneak
3

Simplement

int i=123;
string paddedI = i.ToString("D4");
cahit beyaz
la source
8
Ajoutez également de la complexité.
Giulio Caccin
fixe pour les nombres négatifs.
cahit beyaz
Correction de la complexité
cahit beyaz
2

.NET a une fonction facile à faire dans la Stringclasse. Utilisez simplement:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  
Hernan
la source
Cela fonctionne si vous avez une longueur de chaîne fixe avec un nombre qui change. Merci pour cela! :)
Fen Ignacio
0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055
Serge
la source
0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);
Demodave
la source
-2

Ici, je veux saisir mon numéro à 4 chiffres. Par exemple, s'il vaut 1, il doit afficher 0001, s'il est 11, il doit afficher 0011.

Voici le code qui accomplit cela:

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 un numéro de reçu d'argent pour un fichier PDF.

saktiprasad swain
la source
1
Pourquoi vous modifiez ma réponse juste lettre majuscule ou structure.Is phrase il nécessaire Un développeur doit avoir préoccupation dans le code pas dans la structure de la phrase
saktiprasad Swain
@Unheilig Je suis nouveau sur stackoverflow. Je pense que mon point est réduit lorsque vous avez modifié ma réponse.
saktiprasad swain
3
Comme vous le faites remarquer, vous êtes nouveau dans cette communauté et peu familier avec le système d'édition, vous n'avez perdu aucun point de l'édition qui a été proposée et approuvée par la communauté. Les modifications qui ont été apportées ont en fait considérablement amélioré votre réponse
Security Hound
1
Le vote est en fait anonyme. Le vote négatif a été émis en raison de la mauvaise grammaire. Aurait voté si vous aviez accepté la proposition de modification
Security Hound
-5

Pour remplir int ipour correspondre à la longueur de chaîne de int x, lorsque les deux peuvent être négatifs:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
la source
2
Inutilement déroutant surtout quand il existe une solution très simple.
Juls