C# string.Format()的用法(附带实例)
public static string Format(string format,Object arg0) public static string Format(string format,params Object[] args)
- format:用来指定字符串所要格式化的形式,该参数的基本格式如下:
{index,length}[:formatString]}
- index:要设置格式的对象的参数列表中的位置(从零开始);
- length:参数的字符串表示形式中包含的最小字符数。如果该值是正的则参数右对齐,如果该值是负的则参数左对齐;
- formatString:要设置格式的对象支持的标准或自定义格式字符串;
- arg0:要设置格式的对象;
- args:一个对象数组,其中包含零个或多个要设置格式的对象;
- 返回值:格式化后的字符串。
格式化字符串主要有两种情况,分别是数值类型数据的格式化和日期时间类型数据的格式化,下面分别讲解。
C#数值类型数据的格式化
在实际开发中,数值类型有多种显示方式,比如货币形式、百分比形式等,C# 支持的标准数值格式规范如下表所示。格式说明符 | 名称 | 说明 | 示例 |
---|---|---|---|
C 或 c | 货币 |
结果:货币值 受以下类型支持:所有数值类型 精度说明符:小数位数 |
¥123 或 -¥123.456 |
D 或 d | Decimal |
结果:整型数字,负号可选 受以下类型支持:仅整型 精度说明符:最小位数 |
1234 或 -001234 |
E 或 e | 指数(科学型) |
结果:指数记数法 受以下类型支持:所有数值类型 精度说明符:小数位数 |
1.05203E+003 或 -1.05e+003 |
F 或 f | 定点 |
结果:整数和小数,负号可选 受以下类型支持:所有数值类型 精度说明符:小数位数 |
1234.57 或 -1234.5600 |
N 或 n | Number |
结果:整数和小数,组分隔符和小数分隔符,负号可选 受以下类型支持:所有数值类型 精度说明符:所需的小数位数 |
1,234.57 或 -1,234.560 |
P 或 p | 百分比 |
结果:乘以100并显示为百分比符号的数字 受以下类型支持:所有数值类型 精度说明符:所需的小数位数 |
100.00 % 或 100 % |
X 或 x | 十六进制 |
结果:十六进制字符串 受以下类型支持:仅整型 精度说明符:结果字符串中的位数 |
FF 或 00FF |
【实例 1】使用表 1 中的标准数值格式规范对不同的数值类型数据进行格式化,并输出,代码如下:注意,在使用 string.Format() 方法对数值类型数据进行格式化时,传入的参数必须为数值类型。
static void Main(string[] args) { //输出金额 Console.WriteLine(string.Format("1251+3950的结果是(以货币形式显示):{0:C}", 1251 + 3950)); //输出科学记数法 Console.WriteLine(string.Format("{0:E}", 120000.1)); //输出以分隔符显示的数字 Console.WriteLine(string.Format("12800以分隔符数字显示的结果是:{0:N0}", 12800)); //输出小数点后两位 Console.WriteLine(string.Format("π取两位小数点:{0:F2}", Math.PI)); //输出十六进制数 Console.WriteLine(string.Format("33的16进制制结果是:{0:X4}", 33)); //输出百分号数字 Console.WriteLine(string.Format("天才是由 {0:P0} 的灵感,加上 {1:P0} 的汗水。", 0.01, 0.99)); Console.ReadLine(); }程序中:
- 第 8 行代码中的 {0: N0} 表示显示的数字中不包括小数;
- 第 10 行代码中的 {0: F2} 表示保留两位小数;
- 第 12 行代码中的 {0: X4} 表示显示 4 位数形式的十六进制数;
- 第 14 行代码中的 {0: P0 }、{1: P0 } 表示显示的百分比中不包括小数。
程序运行结果为:
1251+3950的结果是(以货币形式显示):$5,201.00
1.200001E+005
12800以分隔符数字显示的结果是:12,800
π取两位小数点:3.14
33的16进制制结果是:0021
天才是由 1 % 的灵感,加上 99 % 的汗水。
C#日期时间类型数据的格式化
如果希望日期时间按照某种标准格式输出,比如短日期格式、完整日期时间格式等,那么可以使用 string 类的 Format() 方法将日期时间格式化为指定的格式。C# 支持的日期时间类型格式规范如下表所示:
格式说明符 | 说明 | 举例 |
---|---|---|
d | 短日期格式 | YYYY-MM-dd |
D | 长日期格式 | YYYY 年 MM 月 dd 日 |
f | 完整日期/时间格式(短时间) | YYYY 年 MM 月 dd 日 hh:mm |
F | 完整日期/时间格式(长时间) | YYYY 年 MM 月 dd 日 hh:mm:ss |
g | 常规日期/时间格式(短时间) | YYYY-MM-dd hh:mm |
G | 常规日期/时间格式(长时间) | YYYY-MM-dd hh:mm:ss |
M 或 m | 月/日格式 | MM 月 dd 日 |
t | 短时间格式 | hh:mm |
T | 长时间格式 | hh:mm:ss |
Y 或 y | 年/月格式 | YYYY 年 MM 月 |
注意,在使用 string.Format() 方法对日期时间类型数据进行格式化时,传入的参数必须为 DateTime 类型。
【实例 2】使用表 2 中的标准日期时间格式规范对不同的日期时间数据进行格式化,并输出,代码如下:
static void Main(string[] args) { DateTime strDate = DateTime.Now; // 获取当前日期时间 // 输出短日期格式 Console.WriteLine(string.Format("当前日期的短日期格式表示:{0:d}", strDate)); // 输出长日期格式 Console.WriteLine(string.Format("当前日期的长日期格式表示:{0:D}", strDate)); // 输出完整日期/时间格式(短时间) Console.WriteLine(string.Format("当前日期时间的完整日期/时间格式(短时间)表示:{0:f}", strDate)); // 输出完整日期/时间格式(长时间) Console.WriteLine(string.Format("当前日期时间的完整日期/时间格式(长时间)表示:{0:F}", strDate)); // 输出常规日期/时间格式(短时间) Console.WriteLine(string.Format("当前日期时间的常规日期/时间格式(短时间)表示:{0:g}", strDate)); // 输出常规日期/时间格式(长时间) Console.WriteLine(string.Format("当前日期时间的常规日期/时间格式(长时间)表示:{0:G}", strDate)); // 输出时间格式 Console.WriteLine(string.Format("当前时间的短时间格式表示:{0:t}", strDate)); // 输出长时间格式 Console.WriteLine(string.Format("当前时间的长时间格式表示:{0:T}", strDate)); // 输出月/日格式 Console.WriteLine(string.Format("当前日期的月/日格式表示:{0:M}", strDate)); // 输出年/月格式 Console.WriteLine(string.Format("当前日期的年/月格式表示:{0:Y}", strDate)); Console.ReadLine(); }程序中,在第 3 行代码中获取当前时间时用到了 DateTime 结构,该结构是 .NET Framework 自带的,表示时间上的一刻,通常以日期和当天的时间表示。DateTime.Now 用来获取计算机上的当前日期和时间。
程序运行结果为:
当前日期的短日期格式表示:5/30/2025
当前日期的长日期格式表示:Friday, May 30, 2025
当前日期时间的完整日期/时间格式(短时间)表示:Friday, May 30, 2025 2:17 PM
当前日期时间的完整日期/时间格式(长时间)表示:Friday, May 30, 2025 2:17:56 PM
当前日期时间的常规日期/时间格式(短时间)表示:5/30/2025 2:17 PM
当前日期时间的常规日期/时间格式(长时间)表示:5/30/2025 2:17:56 PM
当前时间的短时间格式表示:2:17 PM
当前时间的长时间格式表示:2:17:56 PM
当前日期的月/日格式表示:May 30
当前日期的年/月格式表示:May 2025
总结
通过在 ToString() 方法中传入指定的“格式说明符”,也可以实现对数值型数据和日期时间型数据的格式化。例如,下面的代码分别使用 ToString() 方法将数字 1298 格式化为货币形式,当前日期格式化为年/月格式,代码如下:
int money = 1298; Console.WriteLine(money.ToString("C")); //使用ToString方法格式化数值类型 DateTime dTime = DateTime.Now; Console.WriteLine(dTime.ToString("Y")); //使用ToString方法格式化日期时间类型