方法: 数値に先行するゼロを埋め込む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. 整数値を 10 進数値と 16 進数値のどちらで表示するかを決定します。Determine whether you want to display the integer as a decimal value or a hexadecimal value.

    • 整数値を 10 進数値として表示するには、ToString(String) メソッドを呼び出し、format パラメーターの値として文字列 "Dn" を渡します。この 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.

    • 整数値を 16 進数値として表示するには、ToString(String) メソッドを呼び出し、format パラメーターの値として文字列 "Xn" を渡します。この 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.FormatConsole.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. 整数値を 10 進数値と 16 進数値のどちらで表示するかを決定します。Determine whether you want to display the integer as a decimal value or a hexadecimal value.

    • それを 10 進数値として書式指定すると、"D" 標準書式指定子を使用する必要があります。Formatting it as a decimal value requires that you use the "D" standard format specifier.

    • それを 16 進数値として書式指定すると、"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) メソッドを呼び出し、10 進数値文字列の場合は "Dn"、16 進数値の場合は "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.

次の例は、整数値に 5 つの先行ゼロを埋め込みます。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. その結果、書式指定された数値の全体の長さは整数部が少なくとも 8 桁になります。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:

    • 文字列に表示する各先行ゼロに対するゼロ プレースホルダー "0"。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.

次の例は、2 つの Double 値を 5 つの先行ゼロで埋め込みます。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