Не могу решить простую задачу с ulearn.me на С# Практика «Парсер предложений» Написал Код ,но он не работает как надо не могу понять почему

using System;
using System.Collections.Generic;

//https://ulearn.me/course/basicprogramming/Praktika_Parser_predlozheniy__d41a27ad-a377-4fbd-ba1c-1bd761c69dd1

/*В этом задании нужно реализовать метод в классе SentencesParserTask. Метод должен делать следующее:
  Разделять текст на предложения, а предложения на слова.
  a. Считайте, что слова состоят только из букв (используйте метод char.IsLetter) или символа апострофа ' 
  и отделены друг от друга любыми другими символами.
  b. Предложения состоят из слов и отделены друг от друга одним из следующих символов .!?;:()
  Приводить символы каждого слова в нижний регистр.
  Пропускать предложения, в которых не оказалось слов.
  Метод должен возвращать список предложений, где каждое предложение — это список из одного или более 
  слов в нижнем регистре.
*/
namespace TextAnalysis
{
    static class SentencesParserTask
    {
        public static List<List<string>> ParseSentences(string text)
        {
            var sentencesList = new List<List<string>>();
            var offerList = SplittingTextToSentences(text);
            foreach (var sentence in offerList)
            {
                var wordList = SplittingTextToWord(sentence);
                sentencesList.Add(wordList);
            }
            return sentencesList;
        }
        public static List<string> SplittingTextToSentences(string text)
        {
            var OfferList = new List<string>();
            var arraySentences = text.Split('.', '!', '?', ':', ';', '(', ')','\"');
            foreach(var sentence in arraySentences)
            {
                if (sentence != "")
                    OfferList.Add(sentence);
            }
            return OfferList;
        }
        public static List<string> SplittingTextToWord(string sentence)
        {
            var wordList = new List<string>();
            var arrayWord = sentence.Split(' ', ',', '\"');
            foreach (var word in arrayWord)
            {
                word.Trim(' ');
                if (word != "") 
                { 
                string NewWord = DelRemovingСharacters(word);
                wordList.Add(NewWord.ToLower());
                }
            }

            return wordList;
        }
        public static string DelRemovingСharacters(string word)
        {
            string wordWithoutSigns = "";
            for(int i = 0;i < word.Length; i++)
            {
                if (Char.IsLetter(word, i) || word[i]=='\'')
                {
                    wordWithoutSigns+= word[i];
                }
            }
            return wordWithoutSigns;
        }
    }
}

Ответы (1 шт):

Автор решения: Evgeny Tsebro
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace TextAnalysis
{
   static class SentencesParserTask
    {
        public static List<List<string>> ParseSentences(string text)
        {
            var listSentences = new List<List<string>>(); // Возвращаемый список
       

 if (text == null) return null; //проверка на наличие текста
        text = text.ToLower();
        var sentences = text.Split(".:;?!()".ToCharArray(),//парсеный на предложения текст
            StringSplitOptions.RemoveEmptyEntries);
        foreach(var sent in sentences)
        {
            var listWords = new List<string>(); // Список для слов
            var builder = new StringBuilder();
            foreach (var ch in sent)
            {
                if (char.IsLetter(ch) || ch == '\'')
                    builder.Append(ch);
                else
                    AddNotEmptyWord(builder, listWords);
            }
            AddNotEmptyWord(builder, listWords);
            if (listWords.Count > 0)
                listSentences.Add(listWords);
        }
        return listSentences;
    }

    public static void AddNotEmptyWord(StringBuilder builder,List<string> listWords)
    {
        if (builder.Length > 0)
        {
            listWords.Add(builder.ToString());
            builder.Clear();
        }
    }
}

}

→ Ссылка