乐哈哈旅游视频网:

string.format

将指定的String 中的每个格式项替换为相应对象的值的文本等效项。

 string str1 = String.Format("{0:N1}",56789);               //result: 56,789.0
 string str2 = String.Format("{0:N2}",56789);               //result: 56,789.00
 string str3 = String.Format("{0:N3}",56789);               //result: 56,789.000
 string str8 = String.Format("{0:F1}",56789);               //result: 56789.0
 string str9 = String.Format("{0:F2}",56789);               //result: 56789.00
 string str11 =(56789 / 100.0).ToString("#.##");           //result: 567.89
 string str12 =(56789 / 100).ToString("#.##");              //result: 567



标准数字格式字符串请参见
格式化类型 | System.Globalization.NumberFormatInfo | 自定义数字格式字符串 | 标准数字格式字符串输出示例语言
C#
Visual Basic
全部显示
标准数字格式字符串用于格式化通用数值类型。标准格式字符串采取“Axx”形式,其中“A”为单个字母字符(被称为格式说明符),“xx”是可选的整数(被称为精度说明符)。格式说明符必须是某个内置格式符。精度说明符的范围从 0 到 99,它控制有效位数或小数点右边零的个数。格式字符串不能包含空白。
如果格式字符串不包含某个标准格式说明符,则引发 FormatException。例如,格式字符串“z”会由于包含一个字母字符而被解释为标准数字格式字符串,但字母字符不属于标准数字格式说明符,所以会引发 FormatException。任何不符合标准数字格式字符串定义的数字格式字符串都被解释为自定义数字格式字符串。格式字符串“c!”包含两个字母字符,因此被解释为自定义格式字符串,尽管字符“c”是标准数字格式说明符。
下表描述了标准数字格式字符串。请注意,这些格式说明符产生的输出字符串受“区域选项”控制面板中的设置的影响。使用不同设置的计算机会生成不同的输出字符串。
格式说明符名称说明
C 或 c货币数字转换为表示货币金额的字符串。转换由用于格式化数字的 NumberFormatInfo 对象的货币格式信息控制。精度说明符指示所需的小数位数。如果省略精度说明符,则使用 NumberFormatInfo 给定的默认货币精度。
D 或 d十进制只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
E 或 e科学计数法(指数)数字转换为“-d.ddd...E+ddd”或“-d.ddd...e+ddd”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。小数点前总有一个数字。精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小数点后六位数字。格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少三位数字的要求。
F 或 f固定点数字转换为“-ddd.ddd...”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。精度说明符指示所需的小数位数。如果忽略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。
G 或 g常规根据数字类型以及是否存在精度说明符,数字会转换为固定点或科学记数法的最紧凑形式。如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。
Byte 或 SByte:3
Int16 或 UInt16:5
Int32 或 UInt32:10
Int64 或 UInt64:19
Single:7
Double:15
Decimal:29
如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用固定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。
上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用固定点表示法并保留尾部零。
N 或 n数字数字转换为“-d,ddd,ddd.ddd...”格式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。小数点左边每三个数字之间插入一个千位分隔符。精度说明符指示所需的小数位数。如果忽略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。
P 或 p百分比数字转换为由 NumberFormatInfo.PercentNegativePattern 属性或 NumberFormatInfo.PercentPositivePattern 属性定义的、表示百分比的字符串。如果数字为负,则产生的字符串由 PercentNegativePattern 定义并以负号开头。已转换的数字乘以 100 以表示为百分比。精度说明符指示所需的小数位数。如果省略精度说明符,则使用 NumberFormatInfo 给定的默认数值精度。
R 或 r往返过程往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使用此说明符格式化数值时,首先用常规格式测试:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的数值,则使用常规格式说明符对其进行格式化。但是,如果此值未被成功地分析为相同的数值,则它这样格式化:Double 使用 17 位精度,Single 使用 9 位精度。虽然精度说明符可以追加到往返过程格式说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。此格式仅受浮点型支持。
X 或 x十六进制数字转换为十六进制数字的字符串。格式说明符的大小写指示对大于 9 的十六进制数字使用大写字符还是小写字符。例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。只有整型才支持此格式。
下面的示例阐释如何使用标准数字格式说明符格式化数字基类型。
[Visual Basic]
Imports System
Imports System.Globalization
Imports System.Threading
Module Module1
    Sub Main()
        Thread.CurrentThread.CurrentCulture = New CultureInfo("en-us")
        Dim MyDouble As Double = 123456789
        Console.WriteLine("The examples in en-US culture:")
        Console.WriteLine(MyDouble.ToString("C"))
        Console.WriteLine(MyDouble.ToString("E"))
        Console.WriteLine(MyDouble.ToString("P"))
        Console.WriteLine(MyDouble.ToString("N"))
        Console.WriteLine(MyDouble.ToString("F"))
        Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")
        Console.WriteLine("The examples in de-DE culture:")
        Console.WriteLine(MyDouble.ToString("C"))
        Console.WriteLine(MyDouble.ToString("E"))
        Console.WriteLine(MyDouble.ToString("P"))
        Console.WriteLine(MyDouble.ToString("N"))
        Console.WriteLine(MyDouble.ToString("F"))
    End Sub
End Module
[C#]
using System;
using System.Threading;
using System.Globalization;
class Class1
{
    static void Main()
    {
        Thread.CurrentThread.CurrentCulture = new CultureInfo("en-us");
            double MyDouble = 123456789;
       
        Console.WriteLine("The examples in en-US culture.\n");
        Console.WriteLine(MyDouble.ToString("C"));
        Console.WriteLine(MyDouble.ToString("E"));
        Console.WriteLine(MyDouble.ToString("P"));
        Console.WriteLine(MyDouble.ToString("N"));
        Console.WriteLine(MyDouble.ToString("F"));
        Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
        Console.WriteLine("The examples in de-DE culture.\n");
        Console.WriteLine(MyDouble.ToString("C"));
        Console.WriteLine(MyDouble.ToString("E"));
        Console.WriteLine(MyDouble.ToString("P"));
        Console.WriteLine(MyDouble.ToString("N"));
        Console.WriteLine(MyDouble.ToString("F"));
    }
}
上述代码示例将下列内容显示到控制台。
The examples in en-US culture:
$123,456,789.00
1.234568E+008
12,345,678,900.00%
123,456,789.00
123456789.00
The examples in de-DE culture:
123.456.789,00 DM
1,234568E+008
12,345,678,900.00%
123.456.789,00
123456789,00


自定义 DateTime 格式字符串请参见
格式化类型 | System.DateTime | System.IFormatProvider | 自定义 DateTime 格式字符串输出示例 | 标准 DateTime 格式字符串语言
C#
Visual Basic
全部显示
通过使用自定义 DateTime 格式说明符来创建自己的自定义 DateTime 格式字符串,您可以更好地控制格式化 DateTime 对象的方式。组合一个或多个自定义格式说明符,以构造可生成您喜欢的输出的 DateTime 格式化模式。实际上,大多数的标准 DateTime 格式说明符都是在当前适用的 DateTimeFormatInfo 类中指定的格式化模式的别名。
下表描述了自定义格式说明符以及它们产生的结果。这些格式说明符的输出受“区域选项”控制面板中的当前区域性和设置的影响。
格式说明符说明
d显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则它显示为一位数字。
请注意,如果“d”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“d”格式说明符与其他自定义格式说明符或者“%”字符一起传递,则它被解释为自定义格式说明符。
dd显示月份的当前日期,以 1 到 31 之间的一个数字表示,包括 1 和 31。如果日期只有一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。
ddd显示指定的 DateTime 的日期部分缩写名称。如果未提供特定的有效格式提供程序(实现具有预期属性的 IFormatProvider 的非空对象),则使用 DateTimeFormat 的 AbbreviatedDayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedDayNames 属性。
dddd(外加任意数量的附加“d”字符)显示指定的 DateTime 的日期全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 DayNames 属性及其与当前所使用线程关联的当前区域性。否则,使用来自指定格式提供程序的 DayNames 属性。
f显示以一位数字表示的秒。
请注意,如果“f”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为完整的(长日期 + 短时间)格式说明符。如果“f”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
ff显示以二位数字表示的秒。
fff显示以三位数字表示的秒。
ffff显示以四位数字表示的秒。
fffff显示以五位数字表示的秒。
ffffff显示以六位数字表示的秒。
fffffff显示以七位数字表示的秒。
g 或 gg(外加任意数量的附加“g”字符)显示指定的 DateTime 的年代部分(例如 A.D.)。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则年代由与 DateTimeFormat 关联的日历及其与当前线程关联的当前区域性确定。
请注意,如果“g”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准常规格式说明符。如果“g”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
h以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则它显示为单个数字。显示小时时不发生任何舍入。例如,DateTime 为 5:43 时返回 5。
hh, hh(外加任意数量的附加“h”字符)以 1 到 12 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 12)或中午(也显示为 12)后经过的整小时数。如果单独使用这种格式,则无法区别某一小时是中午以前还是中午以后的时间。如果该小时是单个数字 (1-9),则将其格式化为前面带有 0 (01-09)。
H以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则它显示为单个数字。
HH, HH(外加任意数量的附加“H”字符)以 0 到 23 范围中的一个数字显示指定的 DateTime 的小时数,该小时数表示自午夜(显示为 0)后经过的整小时数。如果该小时是单个数字 (0-9),则将其格式化为前面带有 0 (01-09)。
m以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则它显示为一位数字。
请注意,如果“m”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月日模式格式说明符。如果“m”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
mm, mm(外加任意数量的附加“m”字符)以 0 到 59 范围中的一个数字显示指定的 DateTime 的分钟数,该分钟数表示自上一小时后经过的整分钟数。如果分钟是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。
M显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则它显示为一位数字。
请注意,如果“M”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的月天模式格式说明符。如果“M”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
MM显示月份,以 1 到 12 之间(包括 1 和 12)的一个数字表示。如果月份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。
MMM显示指定的 DateTime 的月部分缩写名称。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AbbreviatedMonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 AbbreviatedMonthNames 属性。
MMMM显示指定的 DateTime 的月的全名。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 MonthNames 属性及其与当前线程关联的当前区域性。否则,使用来自指定格式提供程序的 MonthNames 属性。
s以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则它仅显示为一位数字。
请注意,如果“s”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的可排序日期/时间模式格式说明符。如果“s”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
ss, ss(外加任意数量的附加“s”字符)以 0 到 59 范围中的一个数字显示指定的 DateTime 的秒数,该秒数表示自上一分钟后经过的整秒数。如果秒是一位数字 (0-9),则将其格式化为带有前导 0 (01-09)。
t显示指定的 DateTime 的 A.M./P.M. 指示项的第一个字符。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。
请注意,如果“t”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准的长时间模式格式说明符。如果“t”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
tt, tt(外加任意数量的附加“t”字符)显示指定的 DateTime 的 A.M./P.M. 指示项。如果未提供特定的有效格式提供程序(一个非空对象,可实现具有预期属性的 IFormatProvider),则使用 DateTimeFormat 的 AMDesignator(或 PMDesignator)属性及其与当前线程关联的当前区域性。否则,使用来自指定 IFormatProvider 的 AMDesignator(或 PMDesignator)属性。如果对于指定的 DateTime 所经过的总整小时数小于 12,则使用 AMDesignator。否则,使用 PMDesignator。
y最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则它显示为一位数字。
请注意,如果“y”格式说明符单独使用,没有其他自定义格式字符串,则它被解释为标准短日期模式格式说明符。如果“y”格式说明符与其他自定义格式说明符或“%”字符一起传递,则它被解释为自定义格式说明符。
yy最多用两位数字显示指定的 DateTime 的年份。忽略年的前两位数字。如果年份是一位数字 (1-9),则将其格式化为带有前导 0 (01-09)。
yyyy显示指定的 DateTime 的年份部分(包括纪元)。如果年份长度小于四位,则按需要在前面追加零以使显示的年份长度达到四位。
z仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导符号(零显示为“+0”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值的范围是 -12 到 +13。如果偏移量为一位数 (0-9),则将其显示为带合适前导符号的一位数。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。
zz仅以整小时数为单位显示系统当前时区的时区偏移量。偏移量总显示为带有前导或尾随符号(零显示为“+00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12 到 +13。如果偏移量为一位数 (0-9),则将其格式化为前面带有 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。
zzz, zzz(外加任意数量的附加“z”字符)以小时和分钟为单位显示系统当前时区的时区偏移量。偏移量总是显示为带有前导或尾随符号(零显示为“+00:00”),指示早于格林威治时间 (+) 或迟于格林威治时间 (-) 的小时数。值范围为 -12:00 到 +13:00。如果偏移量为一位数 (0-9),则将其格式化为前面带有前导 0 (01-09) 并带有适当的前导符号。时区设置以 +X 或 –X 的形式指定,其中 X 是相对于 GMT 的小时偏差。显示的偏差受夏时制的影响。
:时间分隔符。
/日期分隔符。
"带引号的字符串。显示转义符 (/) 之后两个引号之间的任何字符串的文本值。
'带引号的字符串。显示两个“'”字符之间的任何字符串的文本值。
%c其中 c 既是标准格式说明符又是自定义格式说明符,显示与格式说明符关联的自定义格式模式。
请注意,如果格式说明符作为单个字符来单独使用,它将被解释成标准格式说明符。只有包含两个或更多字符的格式说明符被解释为自定义格式说明符。说明符可以被同时定义为标准和自定义格式说明符,要显示此种说明符的自定义格式,请在说明符之前加“%”符号。
\c其中 c 是任意字符,转义符将下一个字符显示为文本。在此上下文中,转义符不能用于创建转义序列(如“\n”表示换行)。
任何其他字符其他字符作为文本直接写入输出字符串。
向 DateTime.ToString 传递自定义模式时,模式必须至少为两个字符长。如果只传递“d”,则公共语言运行库将其解释为标准格式说明符,这是因为所有单个格式说明符都被解释为标准格式说明符。如果传递单个“h”,则引发异常,原因是不存在标准的“h”格式说明符。若要只使用单个自定义格式进行格式化,请在说明符的前面或后面添加一个空格。例如,格式字符串“h”被解释为自定义格式字符串。
下面的示例阐释如何从 DateTime 创建自定义格式化字符串。此示例假定当前区域性是美国英语 (en-US)。
[Visual Basic]
Dim MyDate As New DateTime(2000, 1, 1, 0, 0, 0)
Dim MyString As String = MyDate.ToString("dddd - d - MMMM")
' In the U.S. English culture, MyString has the value:
' "Saturday - 1 - January".
MyString = MyDate.ToString("yyyy gg")
' In the U.S. English culture, MyString has the value: "2000 A.D.".
[C#]
DateTime MyDate = new DateTime(2000, 1, 1, 0, 0, 0);
String MyString = MyDate.ToString("dddd - d - MMMM");
// In the U.S. English culture, MyString has the value:
// "Saturday - 1 - January".
MyString = MyDate.ToString("yyyy gg");
// In the U.S. English culture, MyString has the value: "2000 A.D.".
枚举格式字符串请参见
格式化类型 | System.Enum | System.DayOfWeek语言
C#
Visual Basic
全部显示
可以使用 ToString 方法创建新的字符串对象,以表示 Enum 的数字、十六进制或字符串值。此方法采用某个枚举格式化字符串指定希望返回的值。
下表列出了枚举格式化字符串及其返回的值。这些格式说明符不区分大小写。
格式字符串结果
G 或 g如有可能,将枚举项显示为字符串值,否则显示当前实例的整数值。如果枚举定义中设置了 Flags 属性,则串联每个有效项的字符串值并将各值用逗号分开。如果未设置 Flags 属性,则将无效值显示为数字项。
F 或 f如有可能,将枚举项显示为字符串值。如果值可以完全显示为枚举项的总和(即使未提供 Flags 属性),则串联每个有效项的字符串值并将各值用逗号分开。如果值不能完全由枚举项确定,则将值格式化为整数值。
D 或 d以尽可能短的表示形式将枚举项显示为整数值。
X 或 x将枚举项显示为十六进制值。按需要将值表示为带有前导零,以确保值的长度最少有八位。
下面的示例定义一个名为 Colors 的枚举,该枚举包含三项:Red、Blue 和 Green。
[Visual Basic]
Public Enum Colors
   Red = 1
   Blue = 2
   Green = 3
End Enum
[C#]
public enum Colors{Red = 1, Blue = 2, Green = 3}
定义了枚举后,可以按下面的方式声明实例。
[Visual Basic]
Dim MyColors As Colors = Colors.Green
[C#]
Colors MyColors = Colors.Green;
下面的示例使用枚举格式化方法将 DayOfWeek 枚举的字符串、数字和十六进制表示形式赋予字符串 MyString。此代码创建 DayOfWeek 枚举的新实例(名为 MyDays),并为其赋值 Friday。然后,它使用“G”、“F”、“D”和“X”格式化字符串将不同的枚举表示形式赋予 MyString。
[Visual Basic]
Dim MyDays As DayOfWeek = DayOfWeek.Friday
Dim MyString As String = MyDays.ToString("G")
' In the U.S. English culture, MyString has the value: "Friday".
MyString = MyDays.ToString("F")
' In the U.S. English culture, MyString has the value: "Friday".
MyString = MyDays.ToString("D")
' In the U.S. English culture, MyString has the value: "5".
MyString = MyDays.ToString("X")
' In the U.S. English culture, MyString has the value: "00000005".
[C#]
DayOfWeek MyDays = DayOfWeek.Friday;
String MyString = MyDays.ToString("G");
// In the U.S. English culture, MyString has the value: "Friday".
MyString = MyDays.ToString("F");
// In the U.S. English culture, MyString has the value: "Friday".
MyString = MyDays.ToString("D");
// In the U.S. English culture, MyString has the value: "5".
MyString = MyDays.ToString("X");
// In the U.S. English culture, MyString has the value: "00000005".
 
 
posted on 2006-09-14 10:26  riky  阅读(1646)  评论(0编辑  收藏  举报

乐哈哈旅游视频网: