Зачем городить сложные условия, если можно просто удалить пустые строки из результата?
Split(new[] { ' ', ',', '.', ':', '\t', '\n' }, StringSplitOptions.RemoveEmptyEntries);
Количество слов также можно посчитать используя regex. Тогда не придется делать огромный массив специальных символов и знаков пункции для функции Split.