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"

Jawaban:


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

Ini menggunakan kelebihan berikut string.Join:

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

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

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

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

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.