C#
中,格式说明符用于定义字符串格式化时的输出格式。它们可以用于 ToString
方法、 String.Format
方法以及字符串插值中。以下是一些常见的格式说明符及其用途:
标准格式说明符是预定义的格式化规则,适用于常见的数据类型(如数字、日期时间等)。
C
或 c
:货币格式会根据当前文化区域设置显示货币符号。
double a = 123123123.456123123;
Console.WriteLine(a.ToString("C"));// 输出:¥123,123,123.46
//(默认文化区域设置)
D
或 d
:十进制数字格式显示整数的完整数字形式。
int number = 12345;
Console.WriteLine(number.ToString("D")); // 输出:12345
E
或 e
:科学计数法格式。double value = 123456789;
Console.WriteLine(value.ToString("E")); // 输出:1.234568E+08
F
或 f
:固定点格式显示小数点后的固定位数。
double value = 123.45678;
Console.WriteLine(value.ToString("F2")); // 输出:123.46
G
或 g
:常规格式根据数字的大小和类型自动选择合适的格式。
double value = 123456789;
Console.WriteLine(value.ToString("G")); // 输出:123456789
N
或 n
:数字格式显示千位分隔符。
int number = 123456789;
Console.WriteLine(number.ToString("N")); // 输出:123,456,789
P
或 p
:百分比格式将数字乘以 100 并显示百分号。
double percentage = 0.12345;
Console.WriteLine(percentage.ToString("P")); // 输出:12.35%
X
或 x
:十六进制格式显示数字的十六进制表示。
int number = 255;
Console.WriteLine(number.ToString("X")); // 输出:FF
d
:短日期格式MM/dd/yyyy
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("d")); // 输出:05/18/2025
D
:长日期格式dddd
, MMMM dd
, yyyy
Console.WriteLine(now.ToString("D")); // 输出:Sunday, May 18, 2025
t
:短时间格式HH:mm
Console.WriteLine(now.ToString("t")); // 输出:14:30
T
:长时间格式HH:mm:ss
Console.WriteLine(now.ToString("T")); // 输出:14:30:45
f
:完整日期时间格式短日期 + 长时间
Console.WriteLine(now.ToString("f")); // 输出:2025年5月18日 20:07
F
:完整日期时间格式长日期 + 长时间
Console.WriteLine(now.ToString("F")); // 输出:2025年5月18日 20:07:51
g
:通用日期时间格式短日期 + 短时间
Console.WriteLine(now.ToString("g")); // 输出:2025/05/18 20:09
G
:通用日期时间格式短日期 + 长时间
Console.WriteLine(now.ToString("G")); // 输出:2025/05/18 20:08:23
u
:通用排序格式yyyy-MM-dd HH:mm:ssZ
Console.WriteLine(now.ToString("u")); // 输出:2025-05-18 20:08:44Z
U
:通用排序格式Console.WriteLine(now.ToString("u")); // 输出:2025年5月18日 12:10:17
自定义格式说明符允许你定义自己的格式规则,适用于数字和日期时间类型。
0
:占位符,表示数字位如果数字不足,会用零填充。
int number = 123;
Console.WriteLine(number.ToString("00000")); // 输出:00123
#
:占位符,表示数字位如果数字不足,不会填充。
int number = 123;
Console.WriteLine(number.ToString("#####")); // 输出:123
var a = 123456.12;
Console.WriteLine(a.ToString("#000.#00")); // 输出:123456.120
Console.WriteLine(a.ToString("#000.00#")); // 输出:123456.12
#
用于避免显示多余的零。0
用于确保格式化后的字符串长度固定。.
:小数点分隔符double value = 123.456;
Console.WriteLine(value.ToString("0.00")); // 输出:123.46
,
:千位分隔符int number = 123456789;
Console.WriteLine(number.ToString("#,##0")); // 输出:123,456,789
yyyy
:四位年份DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy")); // 输出:2025
MM
:两位月份Console.WriteLine(now.ToString("MM")); // 输出:05
dd
:两位日期Console.WriteLine(now.ToString("dd")); // 输出:18
HH
:两位24小时制的小时Console.WriteLine(now.ToString("HH")); // 输出:14
mm
:两位分钟Console.WriteLine(now.ToString("mm")); // 输出:30
ss
:两位秒Console.WriteLine(now.ToString("ss")); // 输出:45
fff
:三位毫秒Console.WriteLine(now.ToString("fff")); // 输出:123
以下是一些综合示例,展示如何在不同场景中使用格式说明符。
double price = 123.456;
int quantity = 10;
string formatted = String.Format("The price is {0:C} and the quantity is {1:N}", price, quantity);
Console.WriteLine(formatted); // 输出:The price is $123.46 and the quantity is 10
double price = 123.456;
int quantity = 10;
string interpolated = $"The price is {price:C} and the quantity is {quantity:N}";
Console.WriteLine(interpolated); // 输出:The price is $123.46 and the quantity is 10
DateTime now = DateTime.Now;
string formattedDate = now.ToString("yyyy-MM-dd HH:mm:ss");
Console.WriteLine(formattedDate); // 输出:2025-05-18 14:30:45
格式说明符是 C#
中用于控制字符串格式化的强大工具。标准格式说明符适用于常见的格式化需求,而自定义格式说明符则提供了更高的灵活性。通过合理使用这些格式说明符,你可以生成符合需求的字符串输出。