2009-04-15 3 views

Antwort

95
String.Join(",", myListOfStrings.ToArray()) 
+0

ta blonde Moment – spacemonkeys

+7

Das einzige, was ich noch hinzufügen könnte, ist ein Null/leer Check vor dem 'ToArray()' Umwandlung: 'myListOfStrings.Where (Funktion (en) Nicht String.IsNullOrEmpty (en)) ToArray()' –

1

Das hängt davon ab, was getrennt zu konvertieren Du meinst mit "best". Die am wenigsten speicherintensiv ist es, zunächst die Größe des final String zu berechnen, dann eine String mit dieser Eigenschaft erstellen und die Saiten zu ihm hinzuzufügen.

Die String einen String-Puffer mit der richtigen Größe, und das Puffer schaffen, was Sie von der ToString-Methode als String erhalten. Dies bedeutet, dass keine zusätzlichen Zwischenzeichenfolgen oder Arrays erstellt werden.

// specify the separator 
string separator = ", "; 

// calculate the final length 
int len = separator.Length * (list.Count - 1); 
foreach (string s in list) len += s.Length; 

// put the strings in a StringBuilder 
StringBuilder builder = new StringBuilder(len); 
builder.Append(list[0]); 
for (int i = 1; i < list.Count; i++) { 
    builder.Append(separator).Append(list[i]); 
} 

// get the internal buffer as a string 
string result = builder.ToString(); 
+4

Nr. Egal, was du mit "am besten" meinst, das ist wahrscheinlich nicht das Beste. – mquander

+0

@mquander: Es ist das Mindeste speicherintensiv, ich machte deutlich, dass im ersten Absatz. Wenn Sie die Speicherlast niedrig halten müssen, ist dies eindeutig die beste Methode. – Guffa

+0

Nicht viel Unterschied in Bezug auf die Speicherintensität. In der Join-Methode gibt es keine Zwischenzeichenfolge. Es ist nur das Array von Referenzen. –

0

Meine Lösung:

string = ["a","2"]\n 
newstring = "" 
endOfString = len(string)-1 
for item in string: 
    newstring = newstring + item 
if item != string[endOfString]: 
    newstring = newstring ","' 
+1

Pseudocode ist manchmal nett, aber tatsächliche Sprachimplementierungen werden hier bevorzugt. –

0

Eine einfache Lösung:

dim str as string = "" 
for each item as string in lst 
    str += ("," & item) 
next 
return str.substring(1) 

es das erste Zeichen aus der Zeichenfolge startet (",")

Verwandte Themen