Ya, perlu ada satu jawaban lagi di sini!
Semua solusi sejauh ini menangani domain input kanonik yang agak terbatas , dengan kecerdasan: akarakter spasi putih tunggal antara elemen (meskipun ujung topi untuk @cherno untuk setidaknya menyebutkan masalah). Tapi saya sampaikan bahwa dalam semua kecuali skenario yang paling tidak jelas, pemisahan semua ini akan menghasilkan hasil yang identik:
string myStrA = "The quick brown fox jumps over the lazy dog";
string myStrB = "The quick brown fox jumps over the lazy dog";
string myStrC = "The quick brown fox jumps over the lazy dog";
string myStrD = " The quick brown fox jumps over the lazy dog";
String.Split
(dalam salah satu rasa yang ditunjukkan di seluruh jawaban lain di sini) tidak berfungsi dengan baik kecuali jika Anda melampirkan RemoveEmptyEntries
pilihan dengan salah satu dari ini:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Seperti yang diungkapkan oleh ilustrasi, menghilangkan opsi menghasilkan empat hasil yang berbeda (berlabel A, B, C, dan D) vs. hasil tunggal dari keempat input ketika Anda menggunakan RemoveEmptyEntries
:
Tentu saja, jika Anda tidak suka menggunakan opsi, cukup gunakan alternatif regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)