Konvertieren Sie ein Array von Ganzzahlen in eine durch Kommas getrennte Zeichenfolge

273

Es ist eine einfache Frage; Ich bin ein Neuling in C #. Wie kann ich Folgendes ausführen?

  • Ich möchte ein Array von Ganzzahlen in eine durch Kommas getrennte Zeichenfolge konvertieren.

ich habe

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

Ich möchte es in eine Zeichenfolge konvertieren

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

Antworten:

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

Dies nutzt die folgende Überlastung von string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);
Cheng Chen
quelle
In diesem Fall müssen Sie das explizite generische Argument nicht übergeben. Es wird gefolgert.
Leppie
6
Pre .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA
Gibt es eine einfache Möglichkeit, dies umzukehren? Nehmen Sie den String und legen Sie ihn in ein Array?
Kory
3
@Kory: Verwenden der String.Split-Methode, siehe msdn.microsoft.com/en-us/library/…
Cheng Chen
132

.NET 4

string.Join(",", arr)

.NET früher

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
Leppie
quelle
17
Vielen Dank für die Pre-.NET4-Version!
Kdenney
1
Ich habe gerade festgestellt, dass ich die .net 4-Version nicht verwenden konnte und ich habe nicht verstanden, warum ich einen Fehler hatte, bis ich Ihre Antwort sah, danke.
Luis Tellez
Ich verwende .NET 4.5. Ich habe versucht, die durch Kommas getrennten Zahlen mit einer Zeichenfolge zu verknüpfen. Ich habe die Fehlermeldung "string [] kann nicht in char konvertiert werden" erhalten. Die frühere Version funktionierte also einwandfrei.
Prasanth G
10
int[] arr = new int[5] {1,2,3,4,5};

Sie können Linq dafür verwenden

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

Sie können zwei Erweiterungsmethoden verwenden, um diese Aufgabe zu vereinfachen:

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

Also jetzt einfach:

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

Verwenden Sie die LINQ- AggregateMethode, um ein Array von Ganzzahlen in eine durch Kommas getrennte Zeichenfolge zu konvertieren

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

Ausgabe wird sein

1,2,3,4

Dies ist eine der Lösungen, die Sie verwenden können, wenn Sie .net 4 nicht installiert haben.

Sushil Pandey
quelle
Es funktioniert jedoch schlecht wegen der Verkettung der Zeichenfolge
Simon Belanger
Ja, es wird schlecht funktionieren, aber vor .net 4.0 String.join wird nur das String-Array als Parameter verwendet. In diesem Fall müssen wir auch den String konvertieren. Wir können ToString verwenden, um eine bessere Leistung zu erzielen, aber es gibt das Problem der Null-Ausnahme
sushil pandey