跳到主要内容

C# 字符串格式化

介绍

在 C# 中,字符串格式化是一种将变量、表达式或对象的值插入到字符串中的方法。通过格式化字符串,你可以创建动态内容,使输出更具可读性和灵活性。C# 提供了多种字符串格式化方法,包括 string.Format、插值字符串(interpolated strings)以及 ToString 方法的格式化选项。

本文将逐步介绍这些方法,并通过代码示例和实际案例帮助你掌握字符串格式化的技巧。


基本语法

1. 使用 string.Format

string.Format 是 C# 中最传统的字符串格式化方法。它使用占位符 {0}{1} 等来插入变量值。

csharp
string name = "Alice";
int age = 25;
string message = string.Format("My name is {0} and I am {1} years old.", name, age);
Console.WriteLine(message);

输出:

My name is Alice and I am 25 years old.
备注

占位符中的数字表示参数的索引,从 0 开始。确保占位符的数量与参数的数量匹配。

2. 插值字符串(Interpolated Strings)

插值字符串是 C# 6.0 引入的一种更简洁的格式化方法。它使用 $ 符号和花括号 {} 直接嵌入变量。

csharp
string name = "Bob";
int score = 95;
string message = $"Hello, {name}! Your score is {score}.";
Console.WriteLine(message);

输出:

Hello, Bob! Your score is 95.
提示

插值字符串不仅更简洁,还支持表达式和方法的直接调用。

3. 使用 ToString 方法

ToString 方法可以用于格式化数字、日期等类型。它接受一个格式化字符串作为参数。

csharp
double price = 19.99;
string formattedPrice = price.ToString("C"); // 格式化为货币
Console.WriteLine(formattedPrice);

输出:

$19.99

格式化选项

1. 数字格式化

C# 提供了多种数字格式化选项,例如货币、百分比、小数位数等。

csharp
double number = 1234.5678;
Console.WriteLine(number.ToString("F2")); // 保留两位小数
Console.WriteLine(number.ToString("P")); // 百分比格式
Console.WriteLine(number.ToString("N2")); // 千位分隔符,保留两位小数

输出:

1234.57
123456.78 %
1,234.57

2. 日期和时间格式化

日期和时间格式化可以通过 ToString 方法实现。

csharp
DateTime now = DateTime.Now;
Console.WriteLine(now.ToString("yyyy-MM-dd")); // 年-月-日
Console.WriteLine(now.ToString("hh:mm:ss tt")); // 时:分:秒 AM/PM

输出:

2023-10-05
03:45:22 PM

3. 自定义格式化

你可以使用自定义格式化字符串来满足特定需求。

csharp
int number = 123;
Console.WriteLine(number.ToString("00000")); // 补零到5位

输出:

00123

实际应用场景

1. 生成动态消息

在日志记录或用户通知中,字符串格式化非常有用。

csharp
string user = "Charlie";
DateTime loginTime = DateTime.Now;
string logMessage = $"User {user} logged in at {loginTime:yyyy-MM-dd HH:mm:ss}.";
Console.WriteLine(logMessage);

输出:

User Charlie logged in at 2023-10-05 15:50:30.

2. 格式化财务数据

在财务应用中,格式化货币和百分比是常见需求。

csharp
double revenue = 1500000;
double growthRate = 0.15;
Console.WriteLine($"Revenue: {revenue:C}");
Console.WriteLine($"Growth Rate: {growthRate:P}");

输出:

Revenue: $1,500,000.00
Growth Rate: 15.00 %

总结

C# 字符串格式化是处理动态字符串的强大工具。通过 string.Format、插值字符串和 ToString 方法,你可以轻松创建格式化的字符串输出。无论是数字、日期还是自定义格式,C# 都提供了丰富的选项来满足你的需求。


附加资源与练习

练习

  1. 使用插值字符串创建一个包含当前日期和时间的欢迎消息。
  2. 格式化一个浮点数,使其显示为带有千位分隔符的两位小数。
  3. 尝试使用 string.Format 和插值字符串分别实现相同的输出,比较两者的优缺点。

进一步学习

警告

确保在格式化字符串时避免占位符与参数数量不匹配的错误。