You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何使用String.Format处理数量未知的动态参数实现字符串拼接

原生的String.Format不支持你提到的{2-11}这类范围占位符语法,你可以选择以下两种成熟方案实现需求:

方案1:先拼接动态部分再传入Format(最常用,易维护)

先把可变的爱好列表拼接为单个字符串,再作为普通参数传入String.Format即可:

// hobbies是用户输入的动态列表,长度1~10都可以自适应
var hobbies = new string[] { "Swimming", "Dancing", "Singing", "Doing nothing" };
// 用指定分隔符拼接所有爱好
var joinedHobbies = string.Join(", ", hobbies);
var text = "Name: {0}, LastName: {1}, Hobbies: {2}";
var result = string.Format(text, "John", "Dohn", joinedHobbies);
Console.WriteLine(result);

输出结果完全符合预期:
Name: John, LastName: Dohn, Hobbies: Swimming, Dancing, Singing, Doing nothing

方案2:单次String.Format调用实现(符合你要的可变参数需求)

如果你一定要用单次Format调用处理所有参数,可以手动拼接占位符,利用String.Format支持传入object[]参数的特性实现:

// 所有参数合并为一个数组
var allParams = new object[] { "John", "Dohn", "Swimming", "Dancing", "Singing", "Doing nothing" };
// 动态生成后续爱好对应的占位符
var hobbyPlaceholders = string.Join(", ", Enumerable.Range(2, allParams.Length - 2).Select(i => $"{{{i}}}"));
var text = $"Name: {{0}}, LastName: {{1}}, Hobbies: {hobbyPlaceholders}";
var result = string.Format(text, allParams);
Console.WriteLine(result);

这种方案不需要提前拼接爱好字符串,仅调用一次String.Format就能完成所有参数的填充,适合占位符规则更复杂的场景。

内容的提问来源于stack exchange,提问作者Skylin R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:57:04