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"

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

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

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

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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.