我有一个数组,例如 string[] ccsplit。
我想将所有这些添加到一个字符串中,所以我使用 stringbuilder:
StringBuilder builder = new StringBuilder();
foreach (string str in ccsplit)
{
builder.Append(str);
}
但唯一的问题是我不希望将字符串 ccsplit[0] 添加到 stringbuilder 中,我该如何实现呢?
甚至不需要使用 StringBuilder 或循环。
string result = String.Concat(ccsplit.Skip(1));
将完成这项工作。您确实需要 Fx 4 或更高版本。
您可以始终从 1 开始索引并将其附加到 stringbuilder。
for(int i=1; i<lengthOfArray;i++)
{
//Do your stuff.
}
单行答案
string str = string.Join("", ccsplit.Skip(1).ToArray());
如果你可以使用 Linq,你可以使用 Skip 扩展方法:
foreach (string str in ccsplit.Skip(1))
{
builder.Append(str);
}
或者,没有 Linq:
for (int i = 1; i < ccsplit.Length; i++) {
builder.Append(ccsplit[i]);
}
您可以使用 Skip() http://msdn.microsoft.com/en-us/library/bb358985.aspx
StringBuilder builder = new StringBuilder();
foreach (string str in ccsplit.Skip(1))
{
builder.Append(str);
}
您还可以使用 LINQ 连接所有字符串:
String result = ccsplit.Skip(1).Aggregate((s1, s2) => s1 + s2);
编辑:这是一个使用的版本StringBuilder
:
String result = ccsplit.Skip(1).Aggregate(new StringBuilder(),
(sb, str) => sb.Append(str),
(sb) => sb.ToString());
这就是没有 LINQ 的方法。
for (var i = 1; i < ccsplit.Length; i++){
builder.Append(ccsplit[i]);
}
using System.Linq;
...
StringBuilder builder = new StringBuilder();
foreach (string str in ccsplit.Skip(1))
{
builder.Append(str);
}
你可能string
最终需要 a ,所以只需使用适当string.Join
的重载而不是StringBuilder
循环:
string combined = string.Join(string.Empty, ccsplit, 1, ccsplit.Length - 1);
使用 for 循环:
StringBuilder builder = new StringBuilder();
for(int i = 1; i < ccsplit.Length; i++)
{
builder.Append(ccsplit[i]);
}
你可以这样做:
StringBuilder builder = new StringBuilder();
for (int ccsplitIndex = 1; ccsplitIndex < ccsplit.Length; ccsplitIndex++)
{
builder.Append(ccsplit[ccsplitIndex]);
}
将 foreach 更改为 a 以从 1 而不是 0 开始索引
for (int i = 1; i <= ccsplit.Length-1; i++)
{
builder.Append(ccsplit[i]);
}