C#中的字符串格式化

在C#中,字符串格式化是一种将变量或表达式插入到字符串中的方法,常用于生成动态文本、输出日志、显示用户信息等。C#提供了多种字符串格式化方式,以下是几种常用的方法:

1. string.Format 方法

这是最传统的字符串格式化方式,使用占位符 {0}、 {1} 等来表示参数位置。

string name = "张三";
int age = 25;
string message = string.Format("我的名字是{0},今年{1}岁。", name, age);
Console.WriteLine(message); // 输出:我的名字是张三,今年25岁。

2. 插值字符串(Interpolated Strings)------推荐方式(C# 6.0+)

使用 $ 符号,可以直接在字符串中嵌入变量,语法更简洁清晰。

string name = "李四";
int age = 20;
string message = $"我的名字是{name},今年{age}岁。";
Console.WriteLine(message); // 输出:我的名字是李四,今年20岁。

你还可以在 {} 中进行简单表达式运算:

string message = $"五年后,我将{age + 5}岁。"; // 输出:五年后,我将35岁。

3. 复合格式化(Composite Formatting)

与 string.Format 类似,也可用于 Console.WriteLine 等方法:

Console.WriteLine("姓名:{0},年龄:{1}", name, age);

4. 格式说明符(Format Specifiers)

可以对数字、日期等进行特定格式化,例如:

double price = 1234.567;
string formatted = "价格:{price:C}"; // 货币格式:¥1,234.57(根据区域设置) string percent = "{0.123:P}"; // 百分比:12.30%
string date = $"{DateTime.Now:yyyy-MM-dd}"; // 日期格式:2025-04-05

常用格式符:

C:货币

D:十进制整数(常用于补零)

F:固定小数位数

N:带千位分隔符的数字

P:百分比

D、T、yyyy-MM-dd 等:日期时间 示例:

int num = 42;
Console.WriteLine($"{num:D5}"); // 输出:00042(5位宽,前面补零)

5. ToString() 方法配合格式字符串

基本类型支持 ToString(string format) 方法:

double value = 1234.56;
string s = value.ToString("N2"); // 输出:1,234.56

6. StringBuilder 中的格式化

当需要高效拼接大量字符串时,可结合 StringBuilder 使用 AppendFormat:

var sb = new StringBuilder();
sb.AppendFormat("欢迎 {0},您有 {1} 条未读消息。", name, 5);
Console.WriteLine(sb.ToString());

总结对比:

| 方法 | 优点 | 推荐场景 | |------|------|----------| | string.Format | 兼容旧版本,适合复杂逻辑 | .NET Framework 项目 | | 插值字符串 $"" | 语法简洁、易读 | 推荐现代C#开发首选 | | 复合格式化 | 直接输出,无需变量 | Console.WriteLine 等 | | ToString(format) | 精确控制数值格式 | 数字、日期格式化 |

? 建议:在现代C#开发中,优先使用插值字符串($""),它不仅可读性强,还支持表达式和格式化说明符,例如:

$"今天的日期是 {DateTime.Now:yyyy年MM月dd日},温度是 {25.6:F1}℃。"

这样代码更直观、易于维护。

相关推荐
Android洋芋18 小时前
AI辅助C盘清理
c语言·开发语言·人工智能·ai辅助c盘清理
灯澜忆梦20 小时前
Go 语言 _JSON---序列化与反序列化
开发语言·golang·json
麻瓜老宋20 小时前
AI开发C语言应用按步走,表达式计算器calc的第四步,交互式 REPL 模式
c语言·开发语言·atomcode
猫猫不是喵喵.20 小时前
双亲委派机制与类加载过程
java·开发语言
在水一缸20 小时前
当 AI 拥有了“核按钮”:深入解析 MCP 服务器与命令执行护栏
运维·服务器·人工智能·命令执行·智能体·ai安全·mcp
froyoisle20 小时前
阿里云免费 SSL 证书申请及配置
服务器·阿里云·ssl·网站
布朗克16821 小时前
Go入门到精通-22-同步原语
开发语言·后端·golang·同步原语
雪的季节21 小时前
【无标题】
linux·服务器·python
帅次21 小时前
Kotlin Flow 与 StateFlow:UI 单向数据流基础
开发语言·ui·kotlin·stateflow·onlifecycle