Ubah array bilangan bulat menjadi string yang dipisahkan koma

273

Ini pertanyaan sederhana; Saya seorang pemula di C #, bagaimana saya bisa melakukan hal berikut

  • Saya ingin mengonversi array bilangan bulat menjadi string yang dipisahkan koma.

saya sudah

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

Saya ingin mengubahnya menjadi satu string

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

Jawaban:

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

Ini menggunakan kelebihan berikut string.Join:

public static string Join<T>(string separator, IEnumerable<T> values);
Cheng Chen
sumber
Anda tidak perlu melewati argumen generik eksplisit dalam kasus ini. Itu akan disimpulkan.
leppie
6
Pra .NET 4 string.Join (",", Array.ConvertAll (arr, i => i.ToString ()))
TPAKTOPA
Apakah ada cara sederhana untuk melakukan kebalikan dari ini? Ambil string dan masukkan ke dalam array?
Kory
3
@Kory: Menggunakan metode String.Split, lihat msdn.microsoft.com/en-us/library/…
Cheng Chen
132

.NET 4

string.Join(",", arr)

.NET sebelumnya

string.Join(",", Array.ConvertAll(arr, x => x.ToString()))
leppie
sumber
17
Terima kasih untuk versi pra-.NET4!
kdenney
1
baru sadar saya tidak bisa menggunakan versi .net 4 dan saya tidak mengerti mengapa saya mengalami kesalahan sampai saya melihat jawaban Anda, terima kasih.
Luis Tellez
Saya menggunakan .NET 4.5. Saya mencoba untuk menggabungkan angka yang dipisahkan koma dengan string. Saya mendapat pesan kesalahan "tidak dapat mengonversi string [] ke char". Jadi versi sebelumnya berfungsi dengan sempurna.
Prasanth G
10
int[] arr = new int[5] {1,2,3,4,5};

Anda dapat menggunakan Linq untuk itu

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

Anda dapat memiliki sepasang metode ekstensi untuk membuat tugas ini lebih mudah:

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

Jadi sekarang saja:

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

Gunakan Aggregatemetode LINQ untuk mengubah array bilangan bulat menjadi string yang dipisahkan koma

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

output akan menjadi

1,2,3,4

Ini adalah salah satu solusi yang dapat Anda gunakan jika Anda belum menginstal .net 4.

sushil pandey
sumber
Ini berkinerja buruk karena penggabungan string,
Simon Belanger
ya itu akan berkinerja buruk tetapi sebelum. Net 4.0 String.join hanya mengambil array string sebagai parameter. Jadi dalam hal ini kita juga perlu mengkonversi dalam string. Kita dapat menggunakan ToString berkinerja lebih baik tetapi ada masalah pengecualian nol
sushil pandey