Convertire l'array di numeri interi in una stringa separata da virgola


273

È una domanda semplice; Sono un principiante in C #, come posso eseguire le seguenti operazioni

  • Voglio convertire una matrice di numeri interi in una stringa separata da virgola.

io ho

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

Voglio convertirlo in una stringa

string => "1,2,3,4,5"

Risposte:


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

Questo utilizza il seguente sovraccarico di string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);

In questo caso non è necessario passare l'argomento generico esplicito. Sarà inferito.
Leppie,

6
Pre .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA

C'è un modo semplice per fare il contrario? Prendi la stringa e inseriscila in un array?
Kory,

3
@Kory: usando il metodo String.Split, vedi msdn.microsoft.com/en-us/library/…
Cheng Chen,

132

.NET 4

string.Join(",", arr)

.NET in precedenza

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))

17
Grazie per la versione pre-.NET4!
Kdenney,

1
ho appena capito che non potevo usare la versione .net 4 e non ho capito perché stavo avendo un errore finché non ho visto la tua risposta, grazie.
Luis Tellez,

Sto usando .NET 4.5. Ho provato a concatenare i numeri separati da virgola con una stringa. Ho ricevuto un errore che diceva "impossibile convertire string [] in char". Quindi la versione precedente ha funzionato perfettamente.
Prasanth G

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

Puoi usare Linq per questo

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

5

Puoi avere un paio di metodi di estensione per semplificare questa attività:

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

Quindi ora solo:

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

3

Utilizzare il Aggregatemetodo LINQ per convertire l'array di numeri interi in una stringa separata da virgola

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

l'uscita sarà

1,2,3,4

Questa è una delle soluzioni che puoi usare se non hai installato .net 4.


Si comporta male a causa della concatenazione delle stringhe, però
Simon Belanger,

sì, funzionerà male ma prima .net 4.0 String.join prende solo l'array di stringhe come parametro. Quindi in quel caso dobbiamo anche convertire in string. Possiamo usare ToString per prestazioni migliori ma c'è un problema di null null
sushil pandey
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.