C# String 格式说明符
- 标准格式说明符
- 数字格式说明符
- `C` 或 `c`:货币格式
- `D` 或 `d`:十进制数字格式
- `E` 或 `e`:科学计数法格式。
- `F` 或 `f`:固定点格式
- `G` 或 `g`:常规格式
- `N` 或 `n`:数字格式
- `P` 或 `p`:百分比格式
- `X` 或 `x`:十六进制格式
- 日期时间格式说明符
- `d`:短日期格式
- `D`:长日期格式
- `t`:短时间格式
- `T`:长时间格式
- `f`:完整日期时间格式
- `F`:完整日期时间格式
- `g`:通用日期时间格式
- `G`:通用日期时间格式
- `u`:通用排序格式
- `U`:通用排序格式
- 自定义格式说明符
- 自定义数字格式说明符
- `0`:占位符,表示数字位
- `#`:占位符,表示数字位
- `.`:小数点分隔符
- `,`:千位分隔符
- 自定义日期时间格式说明符
- `yyyy`:四位年份
- `MM`:两位月份
- `dd`:两位日期
- `HH`:两位24小时制的小时
- `mm`:两位分钟
- `ss`:两位秒
- `fff`:三位毫秒
- 格式说明符的使用示例
- 字符串格式化
- 字符串插值
- 日期时间格式化
- 总结
在
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#
中用于控制字符串格式化的强大工具。标准格式说明符适用于常见的格式化需求,而自定义格式说明符则提供了更高的灵活性。通过合理使用这些格式说明符,你可以生成符合需求的字符串输出。