C#中string.format⽤法详解
String.Format ⽅法的⼏种定义:
String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的⽂本等效项。
String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的⽂本等效项。
String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的⽂本等效项。指定的参数提供区域性特定的格式设置信息。
String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的⽂本等效项。
String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的⽂本等效项。
常⽤的格式化数值结果表
字符说明⽰例输出
C货币string.Format("{0:C3}", 2)$2.000
D⼗进制string.Format("{0:D3}", 2)002
E科学计数法  1.20E+001  1.20E+001
G常规string.Format("{0:G}", 2)2
N⽤分号隔开的数字string.Format("{0:N}", 250000)250,000.00
X⼗六进制string.Format("{0:X000}", 12)C
string.Format("{0:000.000}", 12.2)012.200
常⽤的⼏种实例
1、字符串的数字格式
代码如下:
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
2、格式化货币(跟系统的环境有关,中⽂系统默认格式化⼈民币,英⽂系统格式化美元)
代码如下:
string.Format("{0:C}",0.2)
结果为:¥0.20 (英⽂操作系统结果:$0.20)
默认格式化⼩数点后⾯保留两位⼩数,如果需要保留⼀位或者更多,可以指定位数
代码如下:
string.Format("{0:C1}",23.15)
结果为:¥23.2 (截取会⾃动四舍五⼊)
格式化多个Object实例
代码如下:
string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)
3、格式化⼗进制的数字(格式化成固定的位数,位数不能少于未格式化前,只⽀持整形)
代码如下:
string.Format("{0:D3}",23) //结果为:023
string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指⽰结果字符串中所需的最少数字个数。)
4、⽤分号隔开的数字,并指定⼩数点后的位数
代码如下:
string.Format("{0:N}", 14200) //结果为:14,200.00 (默认为⼩数点后⾯两位)
string.Format("{0:N3}", 14200.2458) //结果为:14,200.246 (⾃动四舍五⼊)
5、格式化百分⽐
string.Format("{0:P}", 0.24583) //结果为:24.58% (默认保留百分的两位⼩数)
string.Format("{0:P1}", 0.24583) //结果为:24.6% (⾃动四舍五⼊)
6、零占位符和数字占位符
代码如下:
string.Format("{0:0000.00}", 12394.039) //结果为:12394.04
string.Format("{0:0000.00}", 194.039) //结果为:0194.04
string.Format("{0:###.##}", 12394.039) //结果为:12394.04
string.Format("{0:####.#}", 194.039) //结果为:194
下⾯的这段说明⽐较难理解,多测试⼀下实际的应⽤就可以明⽩了。
零占位符: 如果格式化的值在格式字符串中出现“0”的位置有⼀个数字,则此数字被复制到结果字符串中。⼩数点前最左边的“0”的位置和⼩数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。 “00”说明符使得值被舍⼊到⼩数点前最近的数字,其中零位总被舍去。
数字占位符: 如果格式化的值在格式字符串中出现“#”的位置有⼀个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。
请注意,如果“0”不是有效数字,此说明符永不显⽰“0”字符,即使“0”是字符串中唯⼀的数字。如果“0”是所显⽰的数字中的有效数字,则显⽰“0”字符。 “##”格式字符串使得值被舍⼊到⼩数点前最近的数字,其中零总被舍去。
7、⽇期格式化
代码如下:
string.Format("{0:d}",System.DateTime.Now) //结果为:2009-3-20 (⽉份位置不是03)
string.Format("{0:D}",System.DateTime.Now) //结果为:2009年3⽉20⽇
string.Format("{0:f}",System.DateTime.Now) //结果为:2009年3⽉20⽇ 15:37
string.Format("{0:F}",System.DateTime.Now) //结果为:2009年3⽉20⽇ 15:37:52
string.Format("{0:g}",System.DateTime.Now) //结果为:2009-3-20 15:38
string.Format("{0:G}",System.DateTime.Now) //结果为:2009-3-20 15:39:27
string.Format("{0:m}",System.DateTime.Now) //结果为:3⽉20⽇
string.Format("{0:t}",System.DateTime.Now) //结果为:15:41
string.Format("{0:T}",System.DateTime.Now) //结果为:15:41:50
_________________________________________________________________
转:
1、格式化货币(跟系统的环境有关,中⽂系统默认格式化⼈民币,英⽂系统格式化美元)
string.Format("{0:C}",0.2) 结果为:¥0.20 (英⽂操作系统结果:$0.20)
默认格式化⼩数点后⾯保留两位⼩数,如果需要保留⼀位或者更多,可以指定位数
string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会⾃动四舍五⼊)
格式化多个Object实例
string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)
2、格式化⼗进制的数字(格式化成固定的位数,位数不能少于未格式化前,只⽀持整形)
string.Format("{0:D3}",23) 结果为:023
string.Format("{0:D2}",1223) 结果为:1223,(精度说明符指⽰结果字符串中所需的最少数字个数。)
3、⽤分号隔开的数字,并指定⼩数点后的位数
string.Format("{0:N}", 14200) 结果为:14,200.00 (默认为⼩数点后⾯两位)
string.Format("{0:N3}", 14200.2458) 结果为:14,200.246 (⾃动四舍五⼊)
4、格式化百分⽐
string.Format("{0:P}", 0.24583) 结果为:24.58% (默认保留百分的两位⼩数)
string.Format("{0:P1}", 0.24583) 结果为:24.6% (⾃动四舍五⼊)
5、零占位符和数字占位符
string.Format("{0:0000.00}", 12394.039) 结果为:12394.04
string.Format("{0:0000.00}", 194.039) 结果为:0194.04
string.Format("{0:###.##}", 12394.039) 结果为:12394.04
string.Format("{0:####.#}", 194.039) 结果为:194
下⾯的这段说明⽐较难理解,多测试⼀下实际的应⽤就可以明⽩了。
零占位符:
如果格式化的值在格式字符串中出现“0”的位置有⼀个数字,则此数字被复制到结果字符串中。⼩数点前最左边的“0”的位置和⼩数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。
“00”说明符使得值被舍⼊到⼩数点前最近的数字,其中零位总被舍去。
数字占位符:
c++中string的用法如果格式化的值在格式字符串中出现“#”的位置有⼀个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。
请注意,如果“0”不是有效数字,此说明符永不显⽰“0”字符,即使“0”是字符串中唯⼀的数字。如果“0”是所显⽰的数字中的有效数字,则显⽰“0”字符。
“##”格式字符串使得值被舍⼊到⼩数点前最近的数字,其中零总被舍去。
PS:空格占位符
string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不⾜则补空格
string.Format("{0,50}", theObj);//格式化成50个字符,原字符右对齐,不⾜则补空格
6、⽇期格式化
string.Format("{0:d}",System.DateTime.Now) 结果为:2009-3-20 (⽉份位置不是03)
string.Format("{0:D}",System.DateTime.Now) 结果为:2009年3⽉20⽇
string.Format("{0:f}",System.DateTime.Now) 结果为:2009年3⽉20⽇ 15:37
string.Format("{0:F}",System.DateTime.Now) 结果为:2009年3⽉20⽇ 15:37:52
string.Format("{0:g}",System.DateTime.Now) 结果为:2009-3-20 15:38
string.Format("{0:G}",System.DateTime.Now) 结果为:2009-3-20 15:39:27
string.Format("{0:m}",System.DateTime.Now) 结果为:3⽉20⽇
string.Format("{0:t}",System.DateTime.Now) 结果为:15:41
string.Format("{0:T}",System.DateTime.Now) 结果为:15:41:50
更详细的说明请下⾯微软对此的说明或者上msdn上查询。
微软MSDN对string.format的⽅法说明:
名称说明
String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的⽂本等效项。
String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的⽂本等效项。
String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的⽂本等效项。指定的参数提供区域性特定的格式设置信息。
String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的⽂本等效项。
String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的⽂本等效项。
标准数字格式字符串
格式说明符名称说明
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 ⽽且⼩于精度说明符,则使⽤定点表⽰法;否则使⽤科学记数法。如果要求有⼩数点,并且忽略尾部零,则结果包含⼩数点。如果精度说明符存在,并且结果的
有效数字位数超过指定精度,则通过舍⼊删除多余的尾部数字。
上述规则有⼀个例外:如果数字是 Decimal ⽽且省略精度说明符时。在这种情况下总使⽤定点表⽰法并保留尾部零。
使⽤科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。
N 或 n
数字
数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表⽰负数符号(如果需要),“d”表⽰数字 (0-9),“,”表⽰数字组之间的千位分隔
符,“.”表⽰⼩数点符号。实际的负数模式、数字组⼤⼩、千位分隔符以及⼗进制分隔符由当前 NumberFormatInfo 对象指定。
精度说明符指⽰所需的⼩数位数。如果忽略精度说明符,则使⽤当前 NumberFormatInfo 对象给定的默认数值精度。
P 或 p
百分⽐
数字转换为由 NumberFormatInfo.PercentNegativePattern 或 NumberFormatInfo.PercentPositivePattern 属性定义的、表⽰百分⽐的字符串,前者⽤于数字为负的情况,后者⽤于数字为正的情况。已转换的数字乘以 100 以表⽰为百分⽐。
精度说明符指⽰所需的⼩数位数。如果忽略精度说明符,则使⽤当前 NumberFormatInfo 对象给定的默认数值精度。
R 或 r
往返过程
只有 Single 和 Double 类型⽀持此格式。往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使⽤此说明符格式化数值时,⾸先使⽤常规格式对其进⾏测试:Double 使⽤ 15 位精度,Single 使⽤ 7 位精度。如果此值被成功地分析回相同的数值,则使⽤常规格式说明符对其进⾏格式化。但是,如果此值未被成功地分析为相同数值,则它这样格式化:Double 使⽤ 17 位精度,Single 使⽤ 9 位精度。
虽然此处可以存在精度说明符,但它将被忽略。使⽤此说明符时,往返过程优先于精度。
X 或 x
⼗六进制数
只有整型才⽀持此格式。数字转换为⼗六进制数字的字符串。格式说明符的⼤⼩写指⽰对⼤于 9 的⼗六进制数字使⽤⼤写字符还是⼩写字符。例如,使⽤“X”产⽣“ABCDEF”,使⽤“x”产⽣“abcdef”。
精度说明符指⽰结果字符串中所需的最少数字个数。如果需要的话,则⽤零填充该数字的左侧,以产⽣精度说明符给定的数字个数。
任何其他单个字符
(未知说明符)
(未知说明符将引发运⾏库格式异常。)
⾃定义数字格式字符串
格式说明符名称说明
零占位符
如果格式化的值在格式字符串中出现“0”的位置有⼀个数字,则此数字被复制到结果字符串中。⼩数点前最左边的“0”的位置和⼩数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。
“00”说明符使得值被舍⼊到⼩数点前最近的数字,其中零位总被舍去。例如,⽤“00”格式化 34.5 将得到值 35。
#
数字占位符
如果格式化的值在格式字符串中出现“#”的位置有⼀个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。
请注意,如果“0”不是有效数字,此说明符永不显⽰“0”字符,即使“0”是字符串中唯⼀的数字。如果“0”是所显⽰的数字中的有效数字,则显⽰“0”字符。
“##”格式字符串使得值被舍⼊到⼩数点前最近的数字,其中零总被舍去。例如,⽤“##”格式化 34.5 将得到值 35。
.
⼩数点
格式字符串中的第⼀个“.”字符确定格式化的值中的⼩数点分隔符的位置;任何其他“.”字符被忽略。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。