字符串生成器和数组

本文关键字:数组 字符串 | 更新日期: 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]);
}