字符串生成器和数组
本文关键字:数组 字符串 | 更新日期: 2023-09-27 18:30:56
我有一个数组,例如string[] ccsplit。
我想将所有这些添加到一个字符串中,所以我使用字符串生成器:
StringBuilder builder = new StringBuilder();
foreach (string str in ccsplit)
{
builder.Append(str);
}
但是唯一的问题是我不希望将字符串 ccsplit[0] 添加到字符串生成器中,我该如何实现?
甚至不需要使用 StringBuilder 或循环。
string result = String.Concat(ccsplit.Skip(1));
会做这项工作。您确实需要 Fx 4 或更高版本。
你可以一直从 1 开始索引,并将其附加到字符串生成器。
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 的情况下执行此操作的方式。
for (var i = 1; i < ccsplit.Length; i++){
builder.Append(ccsplit[i]);
}
您还可以使用 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());
Enumerable.Aggregate
using System.Linq;
。
StringBuilder builder = new StringBuilder();
foreach (string str in ccsplit.Skip(1))
{
builder.Append(str);
}
最后你可能需要一个string
,所以只需使用适当的string.Join
重载而不是StringBuilder
和循环:
string combined = string.Join(string.Empty, ccsplit, 1, ccsplit.Length - 1);
用于循环:
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]);
}