Saya mengambil banyak informasi dalam daftar, terhubung ke database dan saya ingin membuat serangkaian grup, untuk seseorang yang terhubung ke situs web.
Saya menggunakan ini untuk menguji tetapi ini tidak dinamis, jadi itu benar-benar buruk:
string strgroupids = "6";
Saya ingin menggunakan ini sekarang. Tetapi string yang dikembalikan adalah sesuatu seperti1,2,3,4,5,
groupIds.ForEach((g) =>
{
strgroupids = strgroupids + g.ToString() + ",";
strgroupids.TrimEnd(',');
});
strgroupids.TrimEnd(new char[] { ',' });
Saya ingin menghapus ,
setelah 5
tapi pasti tidak berfungsi.
strgroupids = strgroupids.TrimEnd(new char[] { ',' });
tetapi ada ide yang lebih baik di bawah ini.Jawaban:
MSDN:
sumber
Bagaimana dengan melakukannya dengan cara ini
Sebuah banyak bersih.
Ini akan menambahkan semua elemen di dalamnya
groupIds
dengan','
masing-masing, tetapi tidak akan menempatkan','
pada akhirnya.sumber
String dalam c # tidak dapat diubah. Ketika dalam kode Anda Anda lakukan
strgroupids.TrimEnd(',');
ataustrgroupids.TrimEnd(new char[] { ',' });
yangstrgroupids
string yang tidak diubah .Anda perlu melakukan sesuatu sebagai
strgroupids = strgroupids.TrimEnd(',');
gantinya.Mengutip dari sini :
sumber
Tambahkan metode ekstensi.
lalu gunakan:
sumber
int n
memasukkan, jumlah karakter untuk dihapus di akhir. Kedua, Anda menguji dengan panjang nol, tetapi itu tidak menghilangkan semua pengecualian yang mungkin. Akan lebih baik untuk dilakukanint index = ..LastIndexOf..
, kalau begituif (index >= 0)
.string character
tidak bernama. Keempat, tidak jelas bagi programmer masa depan bahwa ini adalah menghapus karakter di akhir string. Oh, tunggu, belum tentu demikian. Sedang mencari string. Bisa saja menghapus dari suatu tempat di tengah. Sekarang programmer pemeliharaan harus memeriksa semua penggunaan metode ini, untuk melihat apa yang ingin dicapai. Bukan metode yang baik untuk menelepon, untuk kebutuhan sederhana ini menghapus dari ujung sebuah string. Maaf atas semua kritiknya; Saya melakukannya untuk siapa saja yang mengadopsi metode ini, jadi mereka mengerti.String.TrimEnd
akan lebih tepat untuk digunakan. Tapi tunggu, itu sudah ada - dan disebutkan dalam pertanyaan asli dan beberapa jawaban lain 3 tahun yang lalu - tidak perlu menemukan metode baru! Apa manfaat dari pendekatan Anda?Menghapus koma tertinggal:
Ini mundur meskipun, Anda menulis kode yang menambahkan koma di tempat pertama. Anda harus menggunakan
string.Join(",",g)
sebagai gantinya, dengan anggapang
astring[]
. Beri nama yang lebih baik daripadag
juga!sumber
Sebagai pengganti menambahkan koma untuk setiap item, Anda bisa menggunakan String.Gabung:
Ini akan menambahkan pemisah ("," dalam contoh ini) antara setiap elemen dalam array.
sumber
Perhatikan bahwa penggunaan di
ForEach
sini biasanya dianggap "salah" (baca misalnya http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx )Menggunakan beberapa LINQ:
Tanpa pengakhiran akhir:
sumber
string.Join
sempurna JIKA Anda memiliki serangkaian string sebagai sumber ATAU Anda memiliki C # 4.0Tambahan untuk solusi sll: Lebih baik untuk memotong string jika ada beberapa kosong di akhir.
sumber
string.Join
lebih baik, tetapi jika Anda benar - benar menginginkan LINQForEach
:Beberapa catatan:
string.Join
danforeach
keduanya lebih baik dari ini, pendekatan yang jauh lebih lambat,
karena tidak pernah ditambahkan+=
) berguna untuk menambahkan string.ToString()
tidak perlu karena disebut secara otomatis ketika menggabungkan non-stringStringBuilder
harus dipertimbangkan alih-alih string gabungansumber
if(strgroupids != string.Empty){
ForEach
;foreach (var g in groupIds) {
berfungsi dengan baik :)