webentwicklung-frage-antwort-db.com.de

Wie kann ich eine Zahl in eine Zeichenfolge mit führenden Nullen formatieren?

Ich habe eine Zahl, die ich in eine Zeichenfolge konvertieren muss. Zuerst habe ich das benutzt:

Key = i.ToString();

Aber mir ist klar, dass es in einer seltsamen Reihenfolge sortiert ist und ich muss es mit Nullen auffüllen. Wie könnte ich das machen?

221
Mandy Weston

Ziemlich einfach:

Key = i.ToString("D2");

D steht für "Dezimalzahl", 2 für die Anzahl der zu druckenden Stellen.

314
Mario

In Formatieren von Zeichenfolgen in C # finden Sie einige Beispiele für die Verwendung von String.Format

Eigentlich ein besseres Beispiel für Formatierung int

String.Format("{0:00000}", 15);          // "00015"

oder benutze String Interpolation :

$"{15:00000}";                           // "00015"
185
Paul

Wenn Sie die Breite festhalten möchten, z. B. 10 Stellen, gehen Sie folgendermaßen vor

Key = i.ToString("0000000000");

Ersetzen Sie mit so vielen Ziffern, wie Sie möchten.

i = 123 ergibt dann Key = "0000000123".

65

Da dies noch niemand erwähnt hat, können Sie bei Verwendung von C # Version 6 oder höher (d. H. Visual Studio 2015) Zeichenfolgeninterpolation verwenden, um den Code zu vereinfachen. Anstatt also string.Format(...) zu verwenden, können Sie Folgendes tun:

Key = $"{i:D2}";
58
DavidG

verwenden:

i.ToString("D10")

Siehe Int32.ToString (MSDN) und Standard Numeric Format Strings (MSDN).

Oder verwenden Sie String.PadLeft. Zum Beispiel,

int i = 321;
Key = i.ToString().PadLeft(10, '0');

Würde zu 0000000321 Führen. Obwohl String.PadLeft Für negative Zahlen nicht funktionieren würde.

Siehe String.PadLeft (MSDN).

30
firefox1986

Normalerweise ist String.Format ("format", object) object.ToString ("format") vorzuziehen. Deshalb,

String.Format("{0:00000}", 15);  

ist vorzuziehen,

Key = i.ToString("000000");
14

Versuchen:

Key = i.ToString("000000");

Persönlich würde ich jedoch sehen, ob Sie nicht direkt nach der Ganzzahl und nicht nach der Zeichenfolgendarstellung sortieren können.

13
Marc Gravell

Hier möchte ich mein Nein auf 4 Stellen begrenzen, so als ob es 1 ist, sollte es als 0001 angezeigt werden, wenn es 11 sollte, sollte es als 0011 angezeigt werden. Unten ist der Code.

        reciptno=1;//Pass only integer.

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

        TxtRecNo.Text = formatted;//Output=0001..

Ich habe diesen Code implementiert, um die Quittungsnummer zu generieren.

3

Für interpolierte Zeichenfolgen:

$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
1
Alan Samet
int num=1;
string number=num.ToString().PadLeft(4, '0')

Ausgabe = "00001"

EDIT: Geändert, um den PadLeft-Betrag anzupassen