我尝试过这样的字符串:
[1][2][3][4][5][6][7][8][9][10]
使用此代码:
string nums = "[" + string.Join("][", Enumerable.Range(1, 10)) + "]";
然而,这看起来并不是很好,所以我想知道我是否可以将string.Format与string.Join结合起来,像这样排序:
string num = string.Join("[{0}]", Enumerable.Range(1, 10));
所以它包裹了每个项目周围的东西,但最终会像这样结束:
1[{0}]2[{0}]3[{0}]4[{0}]5[{0}]6[{0}]7[{0}]8[{0}]9[{0}]10
有更好/更简单的方法吗?
修改 谢谢大家的所有解决方案。我必须说我更喜欢这个
string s = string.Concat(Enumerable.Range(1, 4).Select(i => string.Format("SomeTitle: >>> {0} <<<\n", i)));
通过这个
string s2 = "SomeTitle: >>>" + string.Join("<<<\nSomeTitle: >>>", Enumerable.Range(1, 4)) + "<<<\n";
因为所有格式都在一个字符串中完成,而不是多个。
答案 0 :(得分:20)
string.Concat(Enumerable.Range(1,10).Select(i => string.Format("[{0}]", i)))
答案 1 :(得分: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)));
}
现在你可以制作一个像
这样的清单[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]
输入numbers.JoinFormat(", ", "[{0}]")
。
Concat
"[{0}],")
解决方案会有一个尾随逗号。
空或null
分隔符会生成您的列表。
答案 2 :(得分:1)
您可能正在寻找LINQ解决方案,例如
string nums = String.Concat(Enumerable.Range(1, 10)
.Select(i => string.Format("[{0}]", i)))
为残暴的格式道歉。
修改:在提交者回答提醒后,将String.Join
替换为String.Concat
。
答案 3 :(得分:1)
我只是连接每个项目,并使用String.Concat
将它们组合在一起:
string num =
String.Concat(
Enumerable.Range(1, 10).Select(n => "[" + n + "]")
);
如果你想获得幻想,可以在数字和字符串数组之间进行交叉连接。 :)
string num =
String.Concat(
from n in Enumerable.Range(1, 10)
from s in new string[] { "[", null, "]" }
select s ?? n.ToString()
);
答案 4 :(得分:1)
StringBuilder str = new StringBuilder();
for (int i = 1; i <= 10; i++)
str.AppendFormat("[{0}]", i);
Console.WriteLine(str.ToString());
我的建议是使用StringBuilder追加相同的模式。