HOW TO:以前置字元零來填補數字
您可以將 "D" 標準數值格式字串與有效位數規範一起使用,以前置字元零填補整數。 您可以使用自訂數值格式字串,以前置字元零填補整數和浮點數。 本主題說明如何使用這兩個方法,以前置字元零來填補數字。
若要以前置字元零將整數填補為特定長度
決定您要整數值顯示多少位數字, 將任何前置數字包括在此數目內。
決定您要整數顯示為十進位值還是十六進位值。
若要將整數顯示為十進位值,請呼叫其 ToString(String) 方法,再傳遞字串 "Dn" 做為 format 參數的值,其中 n 代表字串的最小長度。
若要將整數顯示為十六進位值,請呼叫其 ToString(String) 方法,再傳遞字串 "Xn" 做為 format 參數的值,其中 n 代表字串的最小長度。
下列範例會以前置字元零格式化數個整數值,讓格式化數字的總長度至少為八個字元。
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 caling 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
byte byteValue = 254;
short shortValue = 10342;
int intValue = 1023983;
long lngValue = 6985321;
ulong ulngValue = UInt64.MaxValue;
// Display integer values by caling 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
若要以特定數目的前置字元零填補整數
決定您要整數值顯示多少個前置字元零。
決定您要整數顯示為十進位值還是十六進位值。 格式化為十進位值時,需要使用 "D" 標準格式規範;格式化為十六進位值時,需要使用 "X" 標準格式規範。
呼叫整數值的 ToString("D").Length 或 ToString("X").Length 方法,判斷未經填補之數值字串的長度。
將您要包含在格式化字串中的前置字元零數目加上未經填補之數值字串的長度。 這樣就可以確定填補字串的總長度。
呼叫整數值的 ToString(String) 方法,並為十進位字串傳遞字串 "Dn",而為十六進位字串傳遞 "Xn",其中 n 代表填補字串的總長度。 您也可以在支援複合格式的方法中,使用 "Dn" 或 "Xn" 格式字串。
下列範例會使用五個前置字元零填補整數值。
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
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
若要以前置字元零將數值填補為特定長度
決定您要讓數值字串表示在小數點左邊有多少位數, 將任何前置字元零包括在此位數總數內。
定義自訂數值格式字串,使用零的預留位置 ("0") 來表示字元零的數目下限。
呼叫數值的 ToString(String) 方法,並將自訂格式字串傳遞給該方法。 您也可以搭配支援複合格式的方法使用自訂格式字串。
下列範例會以前置字元零格式化數個數值,讓格式化數值在小數點左邊的總長度至少為八個字元。
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(sngValue.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
' 01549230
'
' 01053240
' 00103932.52
' 01549230
' 9034521202.93
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(sngValue.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
// 01549230
//
// 01053240
// 00103932.52
// 01549230
// 9034521202.93
若要以特定數目的前置字元零填補數值
決定您要讓數值有多少個前置字元零。
判斷未經填補的數值字串內小數點左邊數字的位數。 如要完成這項工作:
判斷數值的字串表示是否包含小數點符號。
如果包含小數點符號,請判斷小數點左邊的字元數。
-或-
如果不包含小數點符號,請判斷字串的長度。
建立自訂格式字串,使用零的預留位置 ("0") 表示要在字串中顯示的每個前置字元零,並使用零的預留位置或數字預留位置 ("#") 表示預設字串中的每個位數。
提供自訂格式字串做為數值之 ToString(String) 方法的參數,或做為支援複合格式之方法的參數。
下列範例會使用五個前置字元零來填補兩個 Double 值。
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
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