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?
Ziemlich einfach:
Key = i.ToString("D2");
D
steht für "Dezimalzahl", 2
für die Anzahl der zu druckenden Stellen.
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"
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"
.
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}";
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).
Normalerweise ist String.Format ("format", object) object.ToString ("format") vorzuziehen. Deshalb,
String.Format("{0:00000}", 15);
ist vorzuziehen,
Key = i.ToString("000000");
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.
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.
Für interpolierte Zeichenfolgen:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
int num=1;
string number=num.ToString().PadLeft(4, '0')
Ausgabe = "00001"
EDIT: Geändert, um den PadLeft-Betrag anzupassen