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方法格式化日期时间类型
ICP备案:
公安联网备案: