2009-04-15 3 views

Respuesta

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

ta momento rubio – spacemonkeys

+7

Lo único que podría agregar es una verificación nula/vacía antes de la conversión 'ToArray()': 'myListOfStrings.Where (Function (s) Not String.IsNullOrEmpty (s)). ToArray()' –

1

Eso depende de lo te refieres con "mejor". La menor cantidad de memoria necesaria es primero calcular el tamaño de la cadena final, luego crear un StringBuilder con esa capacidad y agregarle las cadenas.

StringBuilder creará un búfer de cadena con el tamaño correcto, y ese búfer es lo que obtienes del método ToString como una cadena. Esto significa que no hay series intermedias o matrices creadas.

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

No importa a qué te refieres con "mejor" esto probablemente no sea el mejor. – mquander

+0

@mquander: Es la menos memoria intensiva, lo dije claramente en el primer párrafo. Si necesita mantener baja la carga de memoria, este es claramente el mejor método. – Guffa

+0

No hay mucha diferencia en términos de intensidad de la memoria. No hay una cadena intermedia en el método de unión. Es solo el conjunto de referencias. –

0

Mi solución:

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

El seudocódigo a veces es agradable, pero aquí se prefieren las implementaciones del lenguaje real. –

0

Una solución simple:

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

Despega el primer carácter de la cadena (",")

Cuestiones relacionadas