GetParagraphSentences(IList <SentenceItems> paragraphSentenceItems, int paragraphStartPosition) { List <TextParsing.Sentence> result = new List <TextParsing.Sentence>(); TextParsing.Sentence parent = null; foreach (var sentenceItems in paragraphSentenceItems) { Entity lastEntity = sentenceItems.Entities.LastOrDefault(); TextParsing.Sentence current = sentenceItems.Sentence; if (parent != null) { parent.AppendNextPart(current); current = parent; parent = null; } int sentenceEndPosition = paragraphStartPosition + current.StartPosition + current.Text.Length; if ((lastEntity != null) && (sentenceEndPosition < lastEntity.PositionInfo.End)) { parent = current; } else { result.Add(current); } } return(new Tuple <TextParsing.Sentence[], TextParsing.Sentence>(result.ToArray(), parent)); }
/// <summary> /// Добавление предложения в коллекцию /// </summary> /// <param name="sentences">список предложений</param> /// <param name="newSentence">новое предложение</param> private void AddSentence(List <Sentence> sentences, Sentence newSentence) { if (sentences.Any()) { Sentence last = sentences.LastOrDefault(); if (string.IsNullOrEmpty(newSentence.Text.Trim()) || string.IsNullOrEmpty(last.Text.Trim())) { last.AppendNextPart(newSentence); return; } } sentences.Add(newSentence); }