2012-04-13 14 views
1

Ich habe ein Array z. string [] ccsplit.Stringbuilder und Arrays

Ich möchte alle diese in einen String hinzuzufügen, so verwende ich String:

StringBuilder builder = new StringBuilder(); 
foreach (string str in ccsplit) 
{ 
    builder.Append(str); 
} 

Aber das einzige Problem ist, dass ich will nicht die Zeichenfolge ccsplit [0] an die Stringbuilder hinzugefügt werden Wie könnte ich das erreichen?

Antwort

7

Sie können den Index bei 1 die ganze Zeit beginnen und hängen Sie ihn an Stringbuilder.

for(int i=1; i<lengthOfArray;i++) 
{ 
    //Do your stuff. 
} 
+0

Danke, das ist genau das, was für :) Ich war auf der Suche – user1326461

3

Wenn Sie Linq verwenden können, können Sie das Überspringen Erweiterungsmethode verwenden:

foreach (string str in ccsplit.Skip(1)) 
{ 
    builder.Append(str); 
} 

oder ohne Linq:

for (int i = 1; i < ccsplit.Length; i++) { 
    builder.Append(ccsplit[i]); 
} 
1

using System.Linq;

...

StringBuilder builder = new StringBuilder(); 
foreach (string str in ccsplit.Skip(1)) 
{ 
    builder.Append(str); 
} 
2

Sie können LINQ auch alle Strings verketten verwenden:

String result = ccsplit.Skip(1).Aggregate((s1, s2) => s1 + s2); 

bearbeiten: Hier ist eine Version, die StringBuilder verwendet:

String result = ccsplit.Skip(1).Aggregate(new StringBuilder(), 
       (sb, str) => sb.Append(str), 
       (sb) => sb.ToString()); 

Enumerable.Aggregate

+1

LINQ für das ist wie eine Kanone mit Fliegen schießen: P KISS – SiliconMind

+0

Grund Was hier zu verwenden Aggregate , wenn wir nur Join oder Concat können? Auch hier ist kein Grund, StringBuilder zu verwenden, Concat ist bereits für die Ergebniszeichenfolge voller Länge optimiert. – Harm

+0

@Harm: String.Concat wird nur optimiert (intern mit einem StringBuilder), wenn Sie nicht in einer Schleife verketten. Ok, ich habe die einfache String.Join verpasst :) –

2

Dies ist, wie Sie könnten es ohne LINQ tun .

for (var i = 1; i < ccsplit.Length; i++){ 
    builder.Append(ccsplit[i]); 
} 
0

Verwenden Schleife:

StringBuilder builder = new StringBuilder(); 
    for(int i = 1; i < ccsplit.Length; i++) 
    { 
     builder.Append(ccsplit[i]); 
    } 
10

Es ist nicht einmal eine Notwendigkeit, einen String oder eine Schleife zu verwenden.

string result = String.Concat(ccsplit.Skip(1)); 

Wird die Arbeit machen. Sie brauchen Fx 4 oder höher.

4

One Line Antwort

string str = string.Join("", ccsplit.Skip(1).ToArray()); 
0

Sie können es wie folgt tun:

StringBuilder builder = new StringBuilder(); 
for (int ccsplitIndex = 1; ccsplitIndex < ccsplit.Length; ccsplitIndex++) 
{ 
    builder.Append(ccsplit[ccsplitIndex]); 
} 
1

Sie wahrscheinlich eine string am Ende benötigen, so benutzen Sie einfach entsprechende string.Join Überlastung statt StringBuilder und einer Schleife:

string combined = string.Join(string.Empty, ccsplit, 1, ccsplit.Length - 1); 
0

Ändern Sie die foreach von a für stati ng des Index bei 1 statt 0

for (int i = 1; i <= ccsplit.Length-1; i++) 
{ 
    builder.Append(ccsplit[i]); 
} 
Verwandte Themen