Làm cách nào để xóa mục trống khỏi mảng?cách bạn xóa mục nhập trống khỏi mảng
Lặp lại và gán các mục không trống vào mảng mới?
String test = "John, Jane";
//Without using the test.Replace(" ", "");
String[] toList = test.Split(',', ' ', ';');
Làm cách nào để xóa mục trống khỏi mảng?cách bạn xóa mục nhập trống khỏi mảng
Lặp lại và gán các mục không trống vào mảng mới?
String test = "John, Jane";
//Without using the test.Replace(" ", "");
String[] toList = test.Split(',', ' ', ';');
Sử dụng sự quá tải của string.Split
mà phải mất một StringSplitOptions
:
String[] toList = test.Split(new []{',', ' ', ';'}, StringSplitOptions.RemoveEmptyEntries);
Bạn có thể đặt chúng trong một danh sách sau đó gọi phương thức toArray của danh sách, hoặc với LINQ bạn có thể có thể chỉ cần chọn các phi trống và làm toArray.
Bạn sẽ sử dụng the overload of string.Split
which allows the suppression of empty items:
String test = "John, Jane";
String[] toList = test.Split(new char[] { ',', ' ', ';' },
StringSplitOptions.RemoveEmptyEntries);
Hoặc thậm chí tốt hơn, bạn sẽ không tạo ra một mảng mới mỗi lần:
private static readonly char[] Delimiters = { ',', ' ', ';' };
// Alternatively, if you find it more readable...
// private static readonly char[] Delimiters = ", ;".ToCharArray();
...
String[] toList = test.Split(Delimiters, StringSplitOptions.RemoveEmptyEntries);
Split
không sửa đổi danh sách, do đó nên khỏe.
string[] result = toList.Where(c => c != ' ').ToArray();
var result = toList.Where (c =>! String.IsNullOrEmpty (c)). ToArray(); – MvcCmsJon
string[] toList = test.Split(',', ' ', ';').Where(v => !string.IsNullOrEmpty(v.Trim())).ToArray();
'''' vẫn sẽ gây ra 'string.IsNullOrEmpty' để trả về false. Nếu bạn muốn sử dụng 'IsNullOrEmpty', bạn phải' Trim() 'trước tiên. –
@Justin điểm tốt. tôi bỏ qua điều đó: P –
Hãy thử điều này bằng cách sử dụng một chút LINQ:
var n = Array.FindAll(test, str => str.Trim() != string.Empty);
Nếu tách được theo sau bởi một dấu cách, bạn chỉ có thể bao gồm nó trong tách:
String[] toList = test.Split(
new string[] { ", ", "; " },
StringSplitOptions.None
);
Nếu dấu phân cách cũng xảy ra mà không có dấu cách, bạn cũng có thể bao gồm dấu phân cách:
String[] toList = test.Split(
new string[] { ", ", "; ", ",", ";" },
StringSplitOptions.None
);
Lưu ý: Nếu chuỗi chứa các mục rỗng thực sự, chúng sẽ được giữ nguyên. I E. "Dirk, , Arthur"
sẽ không cho kết quả tương tự như "Dirk, Arthur"
.
Cảm ơn rất nhiều quan điểm, yêu thích nó. – Rod