Útmutató: Szám kitöltése kezdő nullákkal

Az első nullákat az egész számokhoz a "D" standard numerikus formátumú sztring használatával, pontosság-meghatározóval adhat hozzá. Egyéni numerikus formátumsztring használatával kezdő nullákat is hozzáadhat az egész számhoz és a lebegőpontos számokhoz. Ez a cikk bemutatja, hogyan használható mindkét módszer egy szám kezdő nullákkal való kitöltésére.

Egész szám kitöltése egy adott hosszúságú kezdő nullával

  1. Határozza meg az egész szám megjelenítendő számjegyeinek minimális számát. Adja meg az összes kezdő számjegyet ebben a számban.

  2. Határozza meg, hogy az egész számot decimális vagy hexadecimális értékként szeretné-e megjeleníteni.

    • Az egész szám decimális értékként való megjelenítéséhez hívja meg a metódust ToString(String) , és adja át a "Dn" sztringet a format paraméter értékeként, ahol n a sztring minimális hosszát jelöli.

    • Ha az egész számot hexadecimális értékként szeretné megjeleníteni, hívja meg a metódust ToString(String) , és adja át az "Xn" sztringet a formátumparaméter értékeként, ahol n a sztring minimális hosszát jelöli.

A formátumsztringet interpolált sztringben is használhatja c# és Visual Basic nyelven is. Másik lehetőségként meghívhat egy olyan metódust is, amely String.FormatConsole.WriteLine összetett formázást használ.

Az alábbi példa több egész számot formáz bevezető nullákkal úgy, hogy a formázott szám teljes hossza legalább nyolc karakter legyen.

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

Egész szám kitöltése adott számú kezdő nullával

  1. Határozza meg, hogy hány kezdő nullát szeretne megjeleníteni az egész számértékben.

  2. Határozza meg, hogy az egész számot decimális vagy hexadecimális értékként szeretné-e megjeleníteni.

    • A decimális értékként való formázáshoz a "D" standard formátumjelölőre van szükség.

    • A hexadecimális értékként való formázáshoz az "X" szabványos formátumkijelölő szükséges.

  3. Az egész számérték ToString("D").Length vagy ToString("X").Length metódus meghívásával határozza meg a nem számozott sztring hosszát.

  4. Adja hozzá a nem formázott numerikus sztring hosszához a formázott sztringben használni kívánt kezdő nullák számát. Az eredmény a kipárnázott sztring teljes hossza.

  5. Hívja meg az egész szám metódusát ToString(String) , és adja át a "Dn" sztringet decimális sztringekhez, az "Xn" karakterláncot pedig hexadecimális sztringekhez, ahol n a kipárnázott sztring teljes hosszát jelöli. Az összetett formázást támogató metódusban a "Dn" vagy az "Xn" formátumsztringet is használhatja.

Az alábbi példa egy egész számot tartalmaz öt kezdő nullával:

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      

Numerikus érték kitöltése adott hosszúságú kezdő nullákkal

  1. Határozza meg, hogy hány számjegy legyen a tizedesvessző bal oldalán, és adja meg a szám sztringképét. A számjegyek teljes számának kezdő nulláit is belefoglalhatja.

  2. Definiáljon egy egyéni numerikus formátumsztringet, amely a nulla helyőrzőt ("0") használja a nullák minimális számának megjelenítéséhez.

  3. Hívja meg a szám metódusát ToString(String) , és adja át az egyéni formátumsztringet. Az egyéni formázási sztringet sztring interpolációval vagy összetett formázást támogató módszerrel is használhatja.

Az alábbi példa több numerikus értéket formáz bevezető nullákkal. Ennek eredményeként a formázott szám teljes hossza legalább nyolc számjegyből áll a tizedesvessző bal oldalán.

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      

Numerikus érték kitöltése adott számú kezdő nullával

  1. Határozza meg, hogy hány kezdő nullával rendelkezzen a numerikus érték.

  2. Határozza meg a tizedesjegyek számától balra lévő számjegyek számát a nem pikkolt numerikus sztringben:

    1. Annak meghatározása, hogy egy szám sztringje tartalmaz-e tizedesjelet.

    2. Ha nem tartalmaz tizedesjelet, határozza meg a tizedesvessző bal oldalán lévő karakterek számát. Ha nem tartalmaz tizedesjelet, határozza meg a sztring hosszát.

  3. Hozzon létre egy egyéni formátumsztringet, amely a következőket használja:

    • A sztringben az egyes kezdő nullák nulla helyőrzője ("0") jelenik meg.

    • A nulla helyőrző vagy a "#" számjegy helyőrzője az alapértelmezett sztring egyes számjegyeinek megjelenítéséhez.

  4. Adja meg az egyéni formázási sztringet paraméterként a szám metódusának ToString(String) vagy az összetett formázást támogató metódusnak.

Az alábbi példa két Double értéket tartalmaz öt kezdő nullával:

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            

Lásd még