2009-04-15 16 views

Répondre

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

ta blonde moment – spacemonkeys

+7

La seule chose que je pourrais ajouter est une vérification null/vide avant la conversion 'ToArray()': 'myListOfStrings.Where (Fonction (s) Not String.IsNullOrEmpty (s)). ToArray()' –

1

Cela dépend de ce que vous voulez dire par "meilleur". Le moins gourmand en mémoire est de calculer d'abord la taille de la chaîne finale, puis de créer un StringBuilder avec cette capacité et d'y ajouter les chaînes. Le StringBuilder va créer un tampon de chaîne avec la bonne taille, et ce tampon est ce que vous obtenez de la méthode ToString en tant que chaîne. Cela signifie qu'il n'y a pas de chaînes ou de tableaux intermédiaires supplémentaires créés.

// 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

Non Peu importe ce que vous entendez par "meilleur" ce n'est probablement pas le meilleur. – mquander

+0

@mquander: C'est le moins gourmand en mémoire, je l'ai clairement dit dans le premier paragraphe. Si vous avez besoin de réduire la charge mémoire, c'est clairement la meilleure méthode. – Guffa

+0

Pas beaucoup de différence en termes d'intensité de la mémoire. Il n'y a pas de chaîne intermédiaire dans la méthode Join. C'est juste le tableau des références. –

0

Ma solution:

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

Le pseudocode est parfois sympa mais les implémentations de langage réelles sont préférées ici. –

0

Une solution simple:

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

Il enlève le premier caractère de la chaîne (",")

Questions connexes