Convierta una matriz de enteros en cadenas separadas por comas

273

Es una pregunta simple; Soy un novato en C #, ¿cómo puedo realizar lo siguiente?

  • Quiero convertir una matriz de enteros en una cadena separada por comas.

yo tengo

int[] arr = new int[5] {1,2,3,4,5};

Quiero convertirlo en una cadena

string => "1,2,3,4,5"
Haim Evgi
fuente

Respuestas:

539
var result = string.Join(",", arr);

Esto utiliza la siguiente sobrecarga de string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);
Cheng Chen
fuente
No necesita pasar el argumento genérico explícito en este caso. Será inferido.
leppie
66
Pre .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA
¿Hay una manera simple de hacer lo contrario a esto? ¿Tomar la cuerda y ponerla en una matriz?
Kory
3
@Kory: utilizando el método String.Split, consulte msdn.microsoft.com/en-us/library/…
Cheng Chen el
132

.NET 4

string.Join(",", arr)

.NET antes

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
leppie
fuente
17
¡Gracias por la versión anterior a .NET4!
kdenney
1
Me di cuenta de que no podía usar la versión .net 4 y no entendí por qué estaba teniendo un error hasta que vi su respuesta, gracias.
Luis Tellez
Estoy usando .NET 4.5. Traté de concatenar los números separados por comas con una cadena. Recibí un error que decía "no se puede convertir la cadena [] a char". Entonces, la versión anterior funcionó a la perfección.
Prasanth G
10
int[] arr = new int[5] {1,2,3,4,5};

Puedes usar Linq para ello

String arrTostr = arr.Select(a => a.ToString()).Aggregate((i, j) => i + "," + j);
Nayak Manish
fuente
5

Puede tener un par de métodos de extensión para facilitar esta tarea:

public static string ToDelimitedString<T>(this IEnumerable<T> lst, string separator = ", ")
{
    return lst.ToDelimitedString(p => p, separator);
}

public static string ToDelimitedString<S, T>(this IEnumerable<S> lst, Func<S, T> selector, 
                                             string separator = ", ")
{
    return string.Join(separator, lst.Select(selector));
}

Entonces ahora solo:

new int[] { 1, 2, 3, 4, 5 }.ToDelimitedString();
nawfal
fuente
3

Use el Aggregatemétodo LINQ para convertir una matriz de enteros en una cadena separada por comas

var intArray = new []{1,2,3,4};
string concatedString = intArray.Aggregate((a, b) =>Convert.ToString(a) + "," +Convert.ToString( b));
Response.Write(concatedString);

la salida será

1,2,3,4

Esta es una de las soluciones que puede usar si no tiene instalado .net 4.

sushil pandey
fuente
Sin embargo, funciona mal debido a la concatenación de cuerdas
Simon Belanger
sí, funcionará mal, pero antes de .net 4.0 String.join solo toma la matriz de cadena como parámetro. En ese caso, también tenemos que convertir en cadena. Podemos usar ToString funciona mejor pero hay un problema de excepción nula
sushil pandey