C # int in String mit aufgefüllten Nullen konvertieren?

Antworten:

706

i.ToString().PadLeft(4, '0')- Okay, funktioniert aber nicht für negative Zahlen
i.ToString("0000");- explizite Form
i.ToString("D4");- Kurzform-Formatbezeichner
$"{i:0000}";- String-Interpolation (C # 6.0+)

Jay
quelle
27
i.ToString (). PadLeft (4, '0') funktioniert NICHT für negative Zahlen, zum Beispiel (-5). PadLeft (4, '0') ist "00-5"
Antonio Bakula
5
So zeigen Sie eine Zeichenfolge mit fester Länge an. ??
Mark Macneil Bikeio
3
@ Rahul Lesen Sie dies: msdn.microsoft.com/en-us/library/…
Kevdog777
2
dieser Weg funktionierte für mich String.Format ("{0: D4}", Nummer);
Arthur Melo
14
Die Verwendung der Verknüpfung im String-Format funktioniert auch, z. B. $ "{i: D4}";
JamesSugrue
274
i.ToString("D4");

Siehe MSDN zu Formatspezifizierern.

Ryan
quelle
4
dieser Weg funktionierte für mich String.Format ("{0: D4}", Nummer);
Arthur Melo
118

Hier ist ein gutes Beispiel:

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
Verweigert Wessels
quelle
66

Sie können verwenden:

int x = 1;
x.ToString("0000");
Yodan Tauber
quelle
26
Und eine zweite Möglichkeit, dieselbe string.Format("{0:0000}", x)
Formatzeichenfolge
57

String-Interpolation im C # 6.0-Stil

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr. Blowhard
quelle
Dieser sieht sehr schön aus. Gute Möglichkeit zu vermeiden$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin
18
i.ToString("0000");
Justin Niessner
quelle
4

Kinderleicht

int i = 1;
i.ToString("0###")
Maeneak
quelle
3
Ich
3

Einfach

int i=123;
string paddedI = i.ToString("D4");
cahit beyaz
quelle
8
Fügen Sie auch Komplexität hinzu.
Giulio Caccin
fest für negative Zahlen.
Cahit Beyaz
Behoben
2

.NET hat eine einfache Funktion, um dies in der StringKlasse zu tun . Benutz einfach:

.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
quelle
Dies funktioniert, wenn Sie eine feste Zeichenfolgenlänge mit einer sich ändernden Zahl haben. Danke dafür! :)
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
quelle
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
quelle
-2

Hier möchte ich meine Nummer mit 4 Ziffern auffüllen. Wenn es beispielsweise 1 ist, sollte es als 0001 angezeigt werden, wenn es 11 ist, sollte es als 0011 angezeigt werden.

Unten ist der Code, der dies erreicht:

reciptno=1; // Pass only integer.

string formatted = string.Format("{0:0000}", reciptno);

TxtRecNo.Text = formatted; // Output=0001

Ich habe diesen Code implementiert, um eine Geldquittungsnummer für eine PDF-Datei zu generieren.

Saktiprasad Swain
quelle
1
Warum bearbeiten Sie meine Antwort nur auf Großbuchstaben oder Satzstruktur.
Ist
@Unheilig Ich bin neu im Stackoverflow. Ich denke, mein Punkt wird reduziert, wenn du meine Antwort bearbeitest.
Saktiprasad Swain
3
Wie Sie hervorheben, sind Sie neu in dieser Community und mit dem Bearbeitungssystem nicht vertraut. Sie haben keine Punkte aus der Bearbeitung verloren, die von der Community vorgeschlagen und genehmigt wurde. Die vorgenommenen Änderungen haben Ihre Antwort
Security Hound
1
Die Abstimmung ist eigentlich anonym. Die Abwertung wurde wegen der schlechten Grammatik abgegeben. Hätte gestimmt, wenn Sie den Bearbeitungsvorschlag akzeptiert hätten
Security Hound
-5

So füllen Sie int idie Zeichenfolge auf int x, wenn beide negativ sein können:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
quelle
2
Unnötig verwirrend, besonders wenn es eine sehr einfache Lösung gibt.
29.