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"

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);

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

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);

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();

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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.