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"

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

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

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

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

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.