Convertir un tableau d'entiers en chaîne séparée par des virgules

274

C'est une question simple; Je suis un débutant en C #, comment puis-je effectuer les opérations suivantes

  • Je veux convertir un tableau d'entiers en une chaîne séparée par des virgules.

j'ai

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

Je veux le convertir en une seule chaîne

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

Réponses:

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

Cela utilise la surcharge suivante de string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);
Cheng Chen
la source
Vous n'avez pas besoin de passer l'argument générique explicite dans ce cas. On en déduira.
leppie
6
Pre .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA
Existe-t-il un moyen simple de faire l'inverse? Prenez la chaîne et mettez-la dans un tableau?
Kory
3
@Kory: Utilisation de la méthode String.Split, voir msdn.microsoft.com/en-us/library/…
Cheng Chen
132

.NET 4

string.Join(",", arr)

.NET plus tôt

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
leppie
la source
17
Merci pour la version pré-.NET4!
kdenney
1
vient de réaliser que je ne pouvais pas utiliser la version .net 4 et je n'ai pas compris pourquoi j'avais une erreur jusqu'à ce que je voie votre réponse, merci.
Luis Tellez
J'utilise .NET 4.5. J'ai essayé de concaténer les nombres séparés par des virgules avec une chaîne. J'ai reçu une erreur disant "impossible de convertir la chaîne [] en char". La version précédente fonctionnait donc parfaitement.
Prasanth G
10
int[] arr = new int[5] {1,2,3,4,5};

Vous pouvez utiliser Linq pour cela

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

Vous pouvez avoir une paire de méthodes d'extension pour faciliter cette tâche:

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

Alors maintenant, juste:

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

Utilisez la Aggregateméthode LINQ pour convertir un tableau d'entiers en une chaîne séparée par des virgules

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

la sortie sera

1,2,3,4

C'est l'une des solutions que vous pouvez utiliser si vous n'avez pas installé .net 4.

sushil pandey
la source
Il fonctionne mal en raison de la concaténation des cordes, cependant
Simon Belanger
oui , il fonctionnera mal mais avant .net 4.0 tableau de chaînes string.join prendre seulement comme parameter.Thus dans ce cas , nous devons également convertir dans la chaîne .nous peut utiliser ToString il effectue mieux , mais il y a un problème d'exception null
Sushil Pandey