string.Format with string.Join

Bri*_*ian 15 c# string formatting

我试过像这样制作一个字符串:

[1][2][3][4][5][6][7][8][9][10]
Run Code Online (Sandbox Code Playgroud)

使用此代码:

string nums = "[" + string.Join("][", Enumerable.Range(1, 10)) + "]";
Run Code Online (Sandbox Code Playgroud)

然而,这看起来并不是很好,所以我想知道我是否可以将string.Format与string.Join结合起来,这样排序:

string num = string.Join("[{0}]", Enumerable.Range(1, 10));
Run Code Online (Sandbox Code Playgroud)

所以它包装了每个项目周围的东西,但最终会像这样:

1[{0}]2[{0}]3[{0}]4[{0}]5[{0}]6[{0}]7[{0}]8[{0}]9[{0}]10
Run Code Online (Sandbox Code Playgroud)

有没有更好/更简单的方法来做到这一点?

编辑: 谢谢大家的所有解决方案.我必须说我更喜欢这个

string s = string.Concat(Enumerable.Range(1, 4).Select(i => string.Format("SomeTitle: >>> {0} <<<\n", i)));
Run Code Online (Sandbox Code Playgroud)

在此之上

string s2 = "SomeTitle: >>>" + string.Join("<<<\nSomeTitle: >>>", Enumerable.Range(1, 4)) + "<<<\n";
Run Code Online (Sandbox Code Playgroud)

因为所有格式都是在一个字符串中完成的,而不是多个.

spe*_*der 21

string.Concat(Enumerable.Range(1,10).Select(i => string.Format("[{0}]", i)))
Run Code Online (Sandbox Code Playgroud)

  • 只是旁注:这只适用于框架> = 4.对于旧版本,您需要将Concat参数转换为数组,例如添加`.ToArray()` (3认同)

Ger*_*old 13

迟到的答案:我想要这样的东西,但有可能输入格式字符串和分隔符.所以这就是我提出的:

public static string JoinFormat<T>(this IEnumerable<T> list, string separator,
                                   string formatString)
{
    formatString = string.IsNullOrWhiteSpace(formatString) ? "{0}": formatString;
    return string.Join(separator,
                         list.Select(item => string.Format(formatString, item)));
}
Run Code Online (Sandbox Code Playgroud)

现在你可以列出一个像

[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]

进入numbers.JoinFormat(", ", "[{0}]").

Concat解决方案"[{0}],")将有一个尾随逗号.

空或null分隔符会生成列表.