Метод string.Split
по умолчанию не удаляет пустые записи, в любом случае вы можете сказать ему сделать это, предоставив ему StringSplitOptions
. Попробуйте использовать ваш метод с параметром StringSplitOptions.RemoveEmptyEntries
.
string[] splittedEmails = emails.Split(';', StringSplitOptions.RemoveEmptyEntries);
На самом деле вы должны попытаться передать ;
в ваш метод TrimEnd
, так как в противном случае он усекает пробелы. Поэтому ваша строка остается с ;
в конце. Это может привести к следующему:
string[] splittedEmails = emails.TrimEnd(';').Split(';');
Оба решения выше работают, это действительно предпочтение, так как разница в производительности не должна быть такой большой.
Редактировать
Это поведение считается «стандартным», по крайней мере, в C#, позвольте мне процитировать MSDN для этого.
Такое поведение облегчает такие форматы, как файлы с разделителями-запятыми (CSV), представляющие табличные данные. Последовательные запятые представляют пустой столбец.
Вы можете передать необязательный параметр StringSplitOptions.RemoveEmptyEntries, чтобы исключить любые пустые строки в возвращаемом массиве. Для более сложной обработки возвращенной коллекции вы можете использовать LINQ для управления последовательностью результатов.
Кроме того, для этого нет особого случая.