Nasıl yapılır: Bir Sayıyı Baştaki Sıfırlarla Doldurma

Duyarlık belirticili "D" standart sayısal biçim dizesini kullanarak bir tamsayıya baştaki sıfırları ekleyebilirsiniz. Özel bir sayısal biçim dizesi kullanarak hem tamsayı hem de kayan nokta sayılarına baştaki sıfırları ekleyebilirsiniz. Bu makalede, bir sayıyı baştaki sıfırlarla doldurmaya yönelik her iki yöntemin nasıl kullanılacağı gösterilmektedir.

Belirli bir uzunluğa başında sıfırlar olan bir tamsayıyı doldurma

  1. Tamsayı değerinin görüntülenmesini istediğiniz en az basamak sayısını belirleyin. Bu sayıya baştaki basamakları ekleyin.

  2. Tamsayıyı ondalık veya onaltılık değer olarak görüntülemek isteyip istemediğinizi belirleyin.

    • Tamsayıyı ondalık değer olarak görüntülemek için yöntemini çağırın ToString(String) ve "Dn" dizesini parametrenin format değeri olarak geçirin; burada n , dizenin en küçük uzunluğunu temsil eder.

    • Tamsayıyı onaltılık değer olarak görüntülemek için yöntemini çağırın ToString(String) ve "Xn" dizesini format parametresinin değeri olarak geçirin; burada n dizenin en küçük uzunluğunu temsil eder.

Biçimlendirme dizesini hem C#hem de Visual Basic'te ilişkilendirilmiş bir dizede de kullanabilirsiniz. Alternatif olarak, bileşik biçimlendirme kullanan veya Console.WriteLine gibi String.Format bir yöntemi çağırabilirsiniz.

Aşağıdaki örnek, biçimlendirilmiş sayının toplam uzunluğunun en az sekiz karakter olması için birkaç tamsayı değerini baştaki sıfırlarla biçimlendirmektedir.

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

Belirli sayıda baştaki sıfır içeren bir tamsayıyı doldurma

  1. Tamsayı değerinin görüntülenmesini istediğiniz baştaki sıfır sayısını belirleyin.

  2. Tamsayıyı ondalık veya onaltılık değer olarak görüntülemek isteyip istemediğinizi belirleyin.

    • Ondalık değer olarak biçimlendirmek için "D" standart biçim tanımlayıcısı gerekir.

    • Bunu onaltılık değer olarak biçimlendirmek için "X" standart biçim tanımlayıcısı gerekir.

  3. Tamsayı değerinin ToString("D").Length veya ToString("X").Length yöntemini çağırarak, tamsayılanmamış sayısal dizenin uzunluğunu belirleyin.

  4. Unpadded sayısal dizenin uzunluğuna, biçimlendirilmiş dizede olmasını istediğiniz baştaki sıfır sayısını ekleyin. Sonuç, doldurulmuş dizenin toplam uzunluğudur.

  5. Tamsayı değerinin ToString(String) yöntemini çağırın ve ondalık dizeler için "Dn" dizesini ve onaltılık dizeler için "Xn" dizesini geçirin; burada n , doldurulmuş dizenin toplam uzunluğunu temsil eder. Bileşik biçimlendirmeyi destekleyen bir yöntemde "Dn" veya "Xn" biçim dizesini de kullanabilirsiniz.

Aşağıdaki örnek, başında beş sıfır olan bir tamsayı değerini tuşlar:

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      

Belirli bir uzunluğa başında sıfırlar olan sayısal bir değeri doldurma

  1. Sayının dize gösteriminin ondalık değerinin solunda kaç basamak olmasını istediğinizi belirleyin. Bu toplam basamak sayısına baştaki sıfırları ekleyin.

  2. En az sıfır sayısını göstermek için sıfır yer tutucusu ("0") kullanan özel bir sayısal biçim dizesi tanımlayın.

  3. Numaranın ToString(String) yöntemini çağırın ve özel biçim dizesini geçirin. Özel biçim dizesini dize ilişkilendirmesiyle veya bileşik biçimlendirmeyi destekleyen bir yöntemle de kullanabilirsiniz.

Aşağıdaki örnek, baştaki sıfırlarla birkaç sayısal değer biçimlendirmektedir. Sonuç olarak, biçimlendirilmiş sayının toplam uzunluğu ondalık sayının solunda en az sekiz basamaktır.

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      

Belirli sayıda baştaki sıfırla sayısal bir değeri doldurma

  1. Sayısal değerin sahip olmasını istediğiniz baştaki sıfır sayısını belirleyin.

  2. Basamaksız sayısal dizedeki ondalık ayırıcının solundaki basamak sayısını belirleyin:

    1. Bir sayının dize gösteriminin ondalık nokta simgesi içerip içermediğini belirleyin.

    2. Ondalık nokta simgesi içermiyorsa, ondalık ayırıcının solundaki karakter sayısını belirleyin. Ondalık nokta simgesi içermiyorsa, dizenin uzunluğunu belirleyin.

  3. Aşağıdakini kullanan özel bir biçim dizesi oluşturun:

    • Dizede görüntülenecek baştaki sıfırların her biri için sıfır yer tutucusu ("0").

    • Varsayılan dizedeki her basamak için sıfır yer tutucusu veya basamak yer tutucusu "#".

  4. Özel biçim dizesini sayının ToString(String) yöntemine veya bileşik biçimlendirmeyi destekleyen bir yönteme parametre olarak sağlayın.

Aşağıdaki örnek, başta beş sıfır olan iki Double değeri tuş takımına ekler:

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            

Ayrıca bkz.