Вы создаете новый Список и удаляете элементы из этого списка, а затем выбрасываете его. Если вам нужен массив, в котором отсутствуют удаленные элементы, вам нужно будет создать новый:
string[] message = "days of the week".Split(' ');
message = message.Where(c => checkShortWord(c)).ToArray();
В качестве альтернативы, вы можете использовать List<String>
вместо string[]
, а затем использовать метод RemoveAll, чтобы изменить его на месте:
List<string> message = "days of the week".Split(' ').ToList();
message.RemoveAll(c => !checkShortWord(c));
Как уже упоминали другие, вы также плохо назвали свой метод предикатов. «IsLongWord» может быть более подходящим. Вы могли бы написать это немного проще, как это:
public static bool IsLongWord(string word)
{
return word.Length > 3 && !Regex.IsMatch(word, "^[0-9]+$");
}