首页 > 编程笔记 > C#笔记 阅读:53

C# string.Format()的用法(附带实例)

C# 中,string 类提供了一个静态的 Format() 方法,用于将字符串数据格式化成指定的格式,其常用的语法格式如下:
public static string Format(string format,Object arg0)
public static string Format(string format,params Object[] args)
{index,length}[:formatString]}

格式化字符串主要有两种情况,分别是数值类型数据的格式化和日期时间类型数据的格式化,下面分别讲解。

C#数值类型数据的格式化

在实际开发中,数值类型有多种显示方式,比如货币形式、百分比形式等,C# 支持的标准数值格式规范如下表所示。

表 1 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

注意,在使用 string.Format() 方法对数值类型数据进行格式化时,传入的参数必须为数值类型。

【实例 1】使用表 1 中的标准数值格式规范对不同的数值类型数据进行格式化,并输出,代码如下:
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();
}
程序中:
程序运行结果为:

1251+3950的结果是(以货币形式显示):$5,201.00
1.200001E+005
12800以分隔符数字显示的结果是:12,800
π取两位小数点:3.14
33的16进制制结果是:0021
天才是由 1 % 的灵感,加上 99 % 的汗水。

C#日期时间类型数据的格式化

如果希望日期时间按照某种标准格式输出,比如短日期格式、完整日期时间格式等,那么可以使用 string 类的 Format() 方法将日期时间格式化为指定的格式。

C# 支持的日期时间类型格式规范如下表所示:
表 2 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方法格式化日期时间类型

相关文章