web-dev-qa-db-fra.com

Convertir une liste de chaînes en chaînes séparées par un délimiteur

Quel est le meilleur moyen de convertir une liste (de chaîne) en chaîne avec les valeurs séparées par une virgule (,)

33
spacemonkeys
String.Join(",", myListOfStrings.ToArray())
104
KevB

Cela dépend de ce que vous entendez par "meilleur". La moins gourmande en mémoire consiste à calculer d'abord la taille de la chaîne finale, puis à créer un StringBuilder ayant cette capacité et à y ajouter les chaînes.

StringBuilder créera un tampon de chaîne de taille correcte. Ce tampon correspond à 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 intermédiaires ni de tableaux 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();
1
Guffa

Ma solution:

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

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 (",")

0
Alex