ใช่จำเป็นต้องมีคำตอบอีกหนึ่งข้อที่นี่!
การแก้ปัญหาทั้งหมดจึงอยู่ที่โดเมนที่ค่อนข้าง จำกัด ของการป้อนข้อมูลที่เป็นที่ยอมรับเพื่อปัญญา: ตัวละครช่องว่างเดียวระหว่างองค์ประกอบ (แม้ว่าปลายหมวกถึง @cherno อย่างน้อยพูดถึงปัญหา) แต่ฉันส่งสิ่งนั้นในสถานการณ์ที่ไม่ชัดเจนส่วนใหญ่การแบ่งสิ่งเหล่านี้ควรให้ผลลัพธ์ที่เหมือนกัน:
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
(ในรสชาติใด ๆ ที่แสดงตลอดคำตอบอื่น ๆ ที่นี่) ก็ใช้งานได้ไม่ดีเว้นแต่คุณจะแนบRemoveEmptyEntries
ตัวเลือกด้วย:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
ดังที่ภาพประกอบแสดงให้เห็นการละเว้นตัวเลือกจะให้ผลลัพธ์ที่แตกต่างกันสี่แบบ (ติดป้าย A, B, C และ D) กับผลลัพธ์เดี่ยวจากอินพุตทั้งสี่เมื่อคุณใช้RemoveEmptyEntries
:
แน่นอนถ้าคุณไม่ชอบใช้ตัวเลือกเพียงใช้ทางเลือก regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)