Vâng, cần có thêm một câu trả lời ở đây!
Do đó, tất cả các giải pháp đều giải quyết được miền hạn chế của đầu vào chính tắc , để dí dỏm: một ký tự khoảng trắng duy nhất giữa các phần tử (mặc dù phần chóp mũ cho @cherno ít nhất là đề cập đến vấn đề). Nhưng tôi gửi rằng trong tất cả các tình huống khó hiểu nhất, việc tách tất cả các kịch bản này sẽ mang lại kết quả giống hệt nhau:
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
(trong bất kỳ hương vị nào được hiển thị trong các câu trả lời khác ở đây) đơn giản là không hoạt động tốt trừ khi bạn đính kèm RemoveEmptyEntries
tùy chọn với một trong hai cách sau:
myStr.Split(new char[0], StringSplitOptions.RemoveEmptyEntries)
myStr.Split(new char[] {' ','\t'}, StringSplitOptions.RemoveEmptyEntries)
Như hình minh họa cho thấy, bỏ qua tùy chọn mang lại bốn kết quả khác nhau (được gắn nhãn A, B, C và D) so với kết quả duy nhất từ cả bốn đầu vào khi bạn sử dụng RemoveEmptyEntries
:
Tất nhiên, nếu bạn không thích sử dụng các tùy chọn, chỉ cần sử dụng thay thế regex :-)
Regex.Split(myStr, @"\s+").Where(s => s != string.Empty)