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.