Freigeben über


Gewusst wie: Auffüllen einer Zahl mit führenden Nullen

Sie können eine ganze Zahl mit führenden Nullen auffüllen, indem Sie die numerische Standardformatzeichenfolge "D" zusammen mit einem Genauigkeitsbezeichner verwenden. Mithilfe einer benutzerdefinierten numerischen Formatzeichenfolge können Sie sowohl ganze Zahlen als auch Gleitkommazahlen mit führenden Nullen auffüllen. In diesem Thema werden beide Methoden zum Auffüllen einer Zahl mit führenden Nullen beschrieben.

So füllen Sie eine ganze Zahl zu einer bestimmten Länge mit führenden Nullen auf

  1. Legen Sie fest, mit wie vielen Stellen der Ganzzahlwert angezeigt werden soll. Bei der Zahl der Stellen sind alle führenden Ziffern zu berücksichtigen.

  2. Legen Sie fest, ob die ganze Zahl als Dezimal- oder als Hexadezimalwert angezeigt werden soll.

    1. Um die ganze Zahl als Dezimalwert anzuzeigen, rufen Sie die ToString(String)-Methode auf, und übergeben Sie die Zeichenfolge "Dn" als Wert im format-Parameter. n gibt die Mindestlänge der Zeichenfolge an.

    2. Um die ganze Zahl als Hexadezimalwert anzuzeigen, rufen Sie die ToString(String)-Methode auf, und übergeben Sie die Zeichenfolge "Xn" als Wert im format-Parameter. n gibt die Mindestlänge der Zeichenfolge an.

    Sie können die Formatzeichenfolge auch in Methoden angeben, z. B. in Format oder WriteLine, die die kombinierte Formatierung verwenden.

Im folgenden Beispiel werden mehrere ganzzahlige Werte so mit führenden Nullen formatiert, dass die Gesamtlänge der formatierten Zahl mindestens acht Zeichen beträgt.

Dim byteValue As Byte = 254
Dim shortValue As Short = 10342
Dim intValue As Integer = 1023983
Dim lngValue As Long = 6985321               
Dim ulngValue As ULong = UInt64.MaxValue

' Display integer values by caling the ToString method.
Console.WriteLine("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8"))
Console.WriteLine("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8"))
Console.WriteLine()

' Display the same integer values by using composite formatting.
Console.WriteLine("{0,22:D8} {0,22:X8}", byteValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", shortValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", intValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", lngValue)
Console.WriteLine("{0,22:D8} {0,22:X8}", ulngValue)
' The example displays the following output:
'                     00000254               000000FE
'                     00010342               00002866
'                     01023983               000F9FEF
'                     06985321               006A9669
'         18446744073709551615       FFFFFFFFFFFFFFFF
'       
'                     00000254               000000FE
'                     00010342               00002866
'                     01023983               000F9FEF
'                     06985321               006A9669
'         18446744073709551615       FFFFFFFFFFFFFFFF
byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;               
ulong ulngValue = UInt64.MaxValue;

// Display integer values by caling the ToString method.
Console.WriteLine("{0,22} {1,22}", byteValue.ToString("D8"), byteValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", shortValue.ToString("D8"), shortValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", intValue.ToString("D8"), intValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", lngValue.ToString("D8"), lngValue.ToString("X8"));
Console.WriteLine("{0,22} {1,22}", ulngValue.ToString("D8"), ulngValue.ToString("X8"));
Console.WriteLine();

// Display the same integer values by using composite formatting.
Console.WriteLine("{0,22:D8} {0,22:X8}", byteValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", shortValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", intValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", lngValue);
Console.WriteLine("{0,22:D8} {0,22:X8}", ulngValue);
// The example displays the following output:
//                     00000254               000000FE
//                     00010342               00002866
//                     01023983               000F9FEF
//                     06985321               006A9669
//         18446744073709551615       FFFFFFFFFFFFFFFF
//       
//                     00000254               000000FE
//                     00010342               00002866
//                     01023983               000F9FEF
//                     06985321               006A9669
//         18446744073709551615       FFFFFFFFFFFFFFFF
//         18446744073709551615       FFFFFFFFFFFFFFFF

So füllen Sie eine ganze Zahl mit einer bestimmten Anzahl führender Nullen auf

  1. Legen Sie fest, mit wie vielen führenden Nullen der Ganzzahlwert angezeigt werden soll.

  2. Legen Sie fest, ob die ganze Zahl als Dezimal- oder als Hexadezimalwert angezeigt werden soll. Wenn Sie die Zahl als Dezimalwert formatieren möchten, verwenden Sie den Standardformatbezeichner "D", oder geben Sie den Standardformatbezeichner "X" an, wenn Sie die Zahl als Hexadezimalwert formatieren möchten.

  3. Bestimmen Sie die Länge der nicht aufgefüllten numerischen Zeichenfolge, indem Sie die ToString("D").Length-Methode oder die ToString("X").Length-Methode des ganzzahligen Werts aufrufen.

  4. Addieren Sie die gewünschte Anzahl von führenden Nullen für die formatierte Zeichenfolge zur Länge der nicht aufgefüllten numerischen Zeichenfolge hinzu. Dieser Wert gibt die Gesamtlänge der aufgefüllten Zeichenfolge an.

  5. Rufen Sie die ToString(String)-Methode des ganzzahligen Werts auf, und übergeben Sie die Zeichenfolge "Dn" für Dezimalzeichenfolgen oder "Xn" für Hexadezimalzeichenfolgen. n gibt die Gesamtlänge der aufgefüllten Zeichenfolge an. Sie können die Formatzeichenfolgen "Dn" und "Xn" auch in Methoden verwenden, die die kombinierte Formatierung unterstützen.

Im folgenden Beispiel wird ein ganzzahliger Wert mit fünf führenden Nullen aufgefüllt.

Dim value As Integer = 160934
Dim decimalLength As Integer = value.ToString("D").Length + 5
Dim hexLength As Integer = value.ToString("X").Length + 5
Console.WriteLine(value.ToString("D" + decimalLength.ToString()))
Console.WriteLine(value.ToString("X" + hexLength.ToString()))
' The example displays the following output:
'       00000160934
'       00000274A6      
int value = 160934;
int decimalLength = value.ToString("D").Length + 5;
int hexLength = value.ToString("X").Length + 5;
Console.WriteLine(value.ToString("D" + decimalLength.ToString()));
Console.WriteLine(value.ToString("X" + hexLength.ToString()));
// The example displays the following output:
//       00000160934
//       00000274A6      

So füllen Sie einen numerischen Wert bis zu einer bestimmten Länge mit führenden Nullen auf

  1. Legen Sie fest, wie viele Stellen links vom Dezimaltrennzeichen in der Zeichenfolgendarstellung der Zahl angezeigt werden sollen. Für diesen Wert sind auch die führenden Nullen zu berücksichtigen.

  2. Definieren Sie eine benutzerdefinierte numerische Formatzeichenfolge, in der Sie mit dem Platzhalter null ("0") die Mindestanzahl an Nullen angeben.

  3. Rufen Sie die ToString(String)-Methode der Zahl auf, und übergeben Sie dabei die benutzerdefinierte Formatzeichenfolge. Sie können die benutzerdefinierte Formatzeichenfolge auch mit Methoden verwenden, die die kombinierte Formatierung unterstützen.

Im folgenden Beispiel werden mehrere numerische Werte so mit führenden Nullen formatiert, dass die Gesamtlänge der formatierten Zahl mindestens acht Ziffern links vom Dezimaltrennzeichen beträgt.

Dim fmt As String = "00000000.##"
Dim intValue As Integer = 1053240
Dim decValue As Decimal = 103932.52d
Dim sngValue As Single = 1549230.10873992
Dim dblValue As Double = 9034521202.93217412

' Display the numbers using the ToString method.
Console.WriteLine(intValue.ToString(fmt))
Console.WriteLine(decValue.ToString(fmt))            
Console.WriteLine(sngValue.ToString(fmt))
Console.WriteLine(sngValue.ToString(fmt))            
Console.WriteLine()

' Display the numbers using composite formatting.
Dim formatString As String = " {0,15:" + fmt + "}"
Console.WriteLine(formatString, intValue)      
Console.WriteLine(formatString, decValue)      
Console.WriteLine(formatString, sngValue)      
Console.WriteLine(formatString, dblValue)      
' The example displays the following output:
'       01053240
'       00103932.52
'       01549230
'       01549230
'       
'               01053240
'            00103932.52
'               01549230
'          9034521202.93      
string fmt = "00000000.##";
int intValue = 1053240;
decimal decValue = 103932.52m;
float sngValue = 1549230.10873992f;
double dblValue = 9034521202.93217412;

// Display the numbers using the ToString method.
Console.WriteLine(intValue.ToString(fmt));
Console.WriteLine(decValue.ToString(fmt));           
Console.WriteLine(sngValue.ToString(fmt));
Console.WriteLine(sngValue.ToString(fmt));           
Console.WriteLine();

// Display the numbers using composite formatting.
string formatString = " {0,15:" + fmt + "}";
Console.WriteLine(formatString, intValue);      
Console.WriteLine(formatString, decValue);      
Console.WriteLine(formatString, sngValue);      
Console.WriteLine(formatString, dblValue);      
// The example displays the following output:
//       01053240
//       00103932.52
//       01549230
//       01549230
//       
//               01053240
//            00103932.52
//               01549230
//          9034521202.93      

So füllen Sie einen numerischen Wert mit einer bestimmten Anzahl von führenden Nullen auf

  1. Legen Sie fest, mit wie vielen führenden Nullen der numerische Wert angezeigt werden soll.

  2. Bestimmen Sie in der nicht aufgefüllten numerischen Zeichenfolge die Anzahl der Ziffern links vom Dezimaltrennzeichen. Gehen Sie dazu wie folgt vor:

    1. Legen Sie fest, ob die Zeichenfolgendarstellung einer Zahl ein Symbol für das Dezimaltrennzeichen beinhaltet.

    2. Wenn ein Dezimaltrennzeichen enthalten ist, bestimmen Sie die Anzahl der Zeichen links vom Dezimaltrennzeichen.

      – oder –

      Wenn kein Dezimaltrennzeichen enthalten ist, bestimmen Sie die Länge der Zeichenfolge.

  3. Erstellen Sie eine benutzerdefinierte Formatzeichenfolge, in der Sie mit dem Platzhalter Null ("0") die gewünschte Anzahl führender Nullen in der Zeichenfolge und mit dem Ziffernplatzhalter ("#") oder dem Platzhalter Null ("0") die Zahl der Stellen in der Standardzeichenfolge angeben.

  4. Übergeben Sie die benutzerdefinierte Formatzeichenfolge als Parameter an die ToString(String)-Methode der Zahl oder an eine Methode, die die kombinierte Formatierung unterstützt.

Im folgenden Beispiel werden zwei Double-Werte mit fünf führenden Nullen aufgefüllt.

Dim dblValues() As Double = { 9034521202.93217412, 9034521202 }
For Each dblValue As Double In dblValues
   Dim decSeparator As String = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator
   Dim fmt, formatString As String

   If dblValue.ToString.Contains(decSeparator) Then
      Dim digits As Integer = dblValue.ToString().IndexOf(decSeparator)
      fmt = New String("0"c, 5) + New String("#"c, digits) + ".##"
   Else
      fmt = New String("0"c, dblValue.ToString.Length)   
   End If
   formatString = "{0,20:" + fmt + "}"

   Console.WriteLine(dblValue.ToString(fmt))
   Console.WriteLine(formatString, dblValue)
Next
' The example displays the following output:
'       000009034521202.93
'         000009034521202.93
'       9034521202
'                 9034521202            
double[] dblValues = { 9034521202.93217412, 9034521202 };
foreach (double dblValue in dblValues)
{
   string decSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
   string fmt, formatString;

   if (dblValue.ToString().Contains(decSeparator))
   {
      int digits = dblValue.ToString().IndexOf(decSeparator);
      fmt = new String('0', 5) + new String('#', digits) + ".##";
   }
   else
   {
      fmt = new String('0', dblValue.ToString().Length);   
   }
   formatString = "{0,20:" + fmt + "}";

   Console.WriteLine(dblValue.ToString(fmt));
   Console.WriteLine(formatString, dblValue);
}
// The example displays the following output:
//       000009034521202.93
//         000009034521202.93
//       9034521202
//                 9034521202            

Siehe auch

Konzepte

Benutzerdefinierte Zahlenformatzeichenfolgen

Standardmäßige Zahlenformatzeichenfolgen

Kombinierte Formatierung