Condividi tramite


Procedura: Aggiungere un numero con zeri iniziali

È possibile aggiungere zeri iniziali a un numero intero usando la stringa di formato numerico standard "D" con un identificatore di precisione. È possibile aggiungere zeri iniziali ai numeri interi e a virgola mobile usando una stringa di formato numerico personalizzata. Questo articolo illustra come usare entrambi i metodi per riempire un numero con zeri iniziali.

Per riempire un numero intero con zeri iniziali fino a raggiungere una lunghezza specifica

  1. Determinare il numero minimo di cifre da visualizzare per il valore intero. Includere qualsiasi cifra iniziale in questo numero.

  2. Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale.

    • Per visualizzare l'intero come valore decimale, chiamare il ToString(String) relativo metodo e passare la stringa "Dn" come valore del format parametro, dove n rappresenta la lunghezza minima della stringa.

    • Per visualizzare l'intero come valore esadecimale, chiamare il ToString(String) relativo metodo e passare la stringa "Xn" come valore del parametro di formato, dove n rappresenta la lunghezza minima della stringa.

È anche possibile usare la stringa di formato in una stringa interpolata sia in C# che in Visual Basic. In alternativa, è possibile chiamare un metodo come String.Format o Console.WriteLine che usa la formattazione composita.

Nell'esempio seguente vengono formattati diversi valori interi con zeri iniziali in modo che la lunghezza totale del numero formattato sia di almeno otto caratteri.

byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;
ulong ulngValue = UInt64.MaxValue;

// Display integer values by calling 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
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 calling 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

Per riempire un numero intero con un numero specifico di zeri iniziali

  1. Determinare il numero di zeri iniziali da visualizzare per il valore intero.

  2. Determinare se si desidera visualizzare l'intero come valore decimale o esadecimale.

    • La formattazione come valore decimale richiede l'identificatore di formato standard "D".

    • La formattazione come valore esadecimale richiede l'identificatore di formato standard "X".

  3. Determinare la lunghezza della stringa numerica senza riempimento chiamando il metodo ToString("D").Length o ToString("X").Length del valore intero.

  4. Aggiungi alla lunghezza della stringa numerica non riempita il numero di zeri iniziali che si desidera nella stringa formattata. Il risultato è la lunghezza totale della stringa riempita.

  5. Chiamare il metodo del ToString(String) valore intero e passare la stringa "Dn" per le stringhe decimali e "Xn" per le stringhe esadecimali, dove n rappresenta la lunghezza totale della stringa riempita. È anche possibile usare la stringa di formato "Dn" o "Xn" in un metodo che supporta la formattazione composita.

Nel seguente esempio, un valore intero viene riempito con cinque zeri iniziali.

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
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      

Per aggiungere un valore numerico con zeri iniziali a una lunghezza specifica

  1. Determinare il numero di cifre a sinistra del decimale in cui si desidera che la rappresentazione di stringa del numero abbia. Includere eventuali zeri iniziali in questo numero totale di cifre.

  2. Definire una stringa di formato numerico personalizzata che usa il segnaposto zero ("0") per rappresentare il numero minimo di zeri.

  3. Chiamare il metodo del ToString(String) numero e passarlo alla stringa di formato personalizzata. È anche possibile usare la stringa di formato personalizzata con l'interpolazione di stringhe o un metodo che supporta la formattazione composita.

Nell'esempio seguente vengono formattati diversi valori numerici con zeri iniziali. Di conseguenza, la lunghezza totale del numero formattato è di almeno otto cifre a sinistra del decimale.

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(dblValue.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
//       9034521202.93
//
//               01053240
//            00103932.52
//               01549230
//          9034521202.93
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(dblValue.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
'       9034521202.93
'       
'               01053240
'            00103932.52
'               01549230
'          9034521202.93      

Per riempire un valore numerico con un numero specifico di zeri iniziali

  1. Determinare quanti zeri iniziali si desidera che il valore numerico abbia.

  2. Determinare il numero di cifre a sinistra del decimale nella stringa numerica non padded:

    1. Determinare se la rappresentazione di stringa di un numero include un simbolo di virgola decimale.

    2. Se include un simbolo di virgola decimale, determinare il numero di caratteri a sinistra del separatore decimale. Se non include un simbolo di virgola decimale, determinare la lunghezza della stringa.

  3. Creare una stringa di formato personalizzata che usa:

    • Segnaposto zero ("0") per ognuno degli zeri iniziali da visualizzare nella stringa.
    • Segnaposto zero o segnaposto di cifra "#" per rappresentare ogni cifra nella stringa predefinita.
  4. Fornire la stringa di formato personalizzata come parametro al metodo del ToString(String) numero o a un metodo che supporta la formattazione composita.

Nell'esempio seguente vengono vuoti due Double valori con cinque zeri iniziali:

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
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            

Vedere anche