Практическое руководство. Дополнение числа начальными нулямиHow to: Pad a Number with Leading Zeros

К целому числу можно добавить начальные нули, используя строку стандартного числового формата "D" с описателем точности.You can add leading zeros to an integer by using the "D" standard numeric format string with a precision specifier. С помощью строки настраиваемого числового формата начальные нули можно добавлять как к целым числам, так и к числам с плавающей запятой.You can add leading zeros to both integer and floating-point numbers by using a custom numeric format string. В этой статье показано, как использовать оба метода для дополнения числа начальными нулями.This article shows how to use both methods to pad a number with leading zeros.

Дополнение целого числа начальными нулями до определенной длиныTo pad an integer with leading zeros to a specific length

  1. Определите минимальное число разрядов для целого числа.Determine the minimum number of digits you want the integer value to display. Добавьте к этому значению число начальных разрядов.Include any leading digits in this number.

  2. Определите, хотите ли вы показывать целое число как десятичное или шестнадцатеричное.Determine whether you want to display the integer as a decimal value or a hexadecimal value.

    • Чтобы показать целое число как десятичное, вызовите метод ToString(String) и передайте строку "Dn" как значение параметра format, где n представляет минимальную длину строки.To display the integer as a decimal value, call its ToString(String) method, and pass the string "Dn" as the value of the format parameter, where n represents the minimum length of the string.

    • Для отображения целого числа в виде шестнадцатеричного значения вызовите его метод ToString(String) и передайте строку "Xn" в качестве значения параметра format, где n представляет минимальную длину строки.To display the integer as a hexadecimal value, call its ToString(String) method and pass the string "Xn" as the value of the format parameter, where n represents the minimum length of the string.

Также можно использовать строку формата в интерполированной строке в C# и Visual Basic или вызвать метод, например String.Format или Console.WriteLine, который использует составное форматирование.You can also use the format string in an interpolated string in both C# and Visual Basic, or you can call a method, such as String.Format or Console.WriteLine, that uses composite formatting.

Следующий пример форматирует несколько целых значений с добавлением начальных нулей, чтобы общая длина форматированного числа составляла по крайней мере 8 символов.The following example formats several integer values with leading zeros so that the total length of the formatted number is at least eight characters.

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

Дополнение целого числа определенным количеством начальных нулейTo pad an integer with a specific number of leading zeros

  1. Определите, сколько начальных нулей должно быть в целом числе.Determine how many leading zeros you want the integer value to display.

  2. Определите, хотите ли вы показывать целое число как десятичное или шестнадцатеричное.Determine whether you want to display the integer as a decimal value or a hexadecimal value.

    • Для форматирования в виде десятичного значения необходимо использовать описатель стандартного формата D.Formatting it as a decimal value requires that you use the "D" standard format specifier.

    • Для форматирования в виде шестнадцатеричного значения необходимо использовать описатель стандартного формата X.Formatting it as a hexadecimal value requires that you use the "X" standard format specifier.

  3. Определите длину недополненной числовой строки, вызвав метод ToString("D").Length или ToString("X").Length целого числа.Determine the length of the unpadded numeric string by calling the integer value's ToString("D").Length or ToString("X").Length method.

  4. Добавьте число начальных нулей, которое следует добавить в форматированную строку, к длине недополненной числовой строки.Add the number of leading zeros that you want to include in the formatted string to the length of the unpadded numeric string. Добавление количества начальных нулей определяет общую длину дополненной строки.Adding the number of leading zeros defines the total length of the padded string.

  5. Вызовите для целого значения метод ToString(String) и передайте строку "Dn" для десятичных строк или строку "Xn" для шестнадцатеричных строк, где n означает общую длину дополненной строки.Call the integer value's ToString(String) method, and pass the string "Dn" for decimal strings and "Xn" for hexadecimal strings, where n represents the total length of the padded string. Строку форматирования "Dn" или "Xn" можно также использовать в методе, поддерживающем составное форматирование.You can also use the "Dn" or "Xn" format string in a method that supports composite formatting.

Следующий пример дополняет целое число пятью начальными нулями.The following example pads an integer value with five leading zeros.

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      

Дополнение числового значения начальными нулями до определенной длиныTo pad a numeric value with leading zeros to a specific length

  1. Определите, сколько разрядов слева от десятичного разделителя должно быть в строковом представлении числа.Determine how many digits to the left of the decimal you want the string representation of the number to have. Добавьте к этому значению число начальных нулей.Include any leading zeros in this total number of digits.

  2. Определите строку настраиваемого формата числа, использующую местозаполнитель нуля (0) для представления минимального количества нулей.Define a custom numeric format string that uses the zero placeholder "0" to represent the minimum number of zeros.

  3. Вызовите метод ToString(String) числа и передайте ему строку настраиваемого формата.Call the number's ToString(String) method and pass it the custom format string. Вы также можете использовать строку настраиваемого формата с интерполяцией строки или методом, поддерживающим составное форматирование.You can also use the custom format string with string interpolation or with a method that supports composite formatting.

Следующий пример форматирует несколько числовых значений с начальными нулями.The following example formats several numeric values with leading zeros. В результате общая длина форматированного числа составляет по крайней мере восемь цифр слева от десятичного разделителя.As a result, the total length of the formatted number is at least eight digits to the left of the decimal.

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      

Дополнение числового значения определенным количеством начальных нулейTo pad a numeric value with a specific number of leading zeros

  1. Определите, сколько начальных нулей должно быть в числовом значении.Determine how many leading zeros you want the numeric value to have.

  2. Определите количество разрядов слева от десятичного разделителя в недополненной числовой строке:Determine the number of digits to the left of the decimal in the unpadded numeric string:

    1. Определите, содержит ли строковое представление числа символ десятичной точки.Determine whether the string representation of a number includes a decimal point symbol.

    2. Если это так, определите число символов слева от десятичной точки.If it does include a decimal point symbol, determine the number of characters to the left of the decimal point.

      -или--or-

      Если строка не содержит десятичный разделитель, определите длину строки.If it doesn't include a decimal point symbol, determine the string's length.

  3. Создайте строку настраиваемого формата, которая использует:Create a custom format string that uses:

    • Местозаполнитель нуля для каждого начального нуля в строке.The zero placeholder "0" for each of the leading zeros to appear in the string.

    • Нулевой местозаполнитель или местозаполнитель разряда # для представления каждого разряда в строке по умолчанию.Either the zero placeholder or the digit placeholder "#" to represent each digit in the default string.

  4. Передайте строку настраиваемого формата как параметр методу ToString(String) числа или методу, поддерживающему составное форматирование.Supply the custom format string as a parameter either to the number's ToString(String) method or to a method that supports composite formatting.

Следующий пример дополняет два значения типа Double число пятью начальными нулями.The following example pads two Double values with five leading zeros.

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            

См. такжеSee also