public void ReplaceWordsBy(int length, string replacement) { var words = GetWordsBy(length).ToList(); var positions = Enumerable.Range(FirstItemPosition, LastItemPosition - FirstItemPosition) .Where(p => words.Any(i => i.Positions.Contains(p))) .ToList() ; if (TextItemsStore.Any(s => Equals(s.Value, replacement))) { TextItemsStore .SingleOrDefault(s => Equals(s.Value, replacement)) .AddPositions(positions); } else { TextItemsStore.Add(new Word(replacement, positions, ItemTypes.Word)); } foreach (var word in words) { word.DeletePositions(positions); } }
private int GetWordCount() { return(Enumerable.Range(FirstItemPosition, LastItemPosition - FirstItemPosition) .Select(p => TextItemsStore .SingleOrDefault(i => i.Positions.Contains(p) && i.Type == ItemTypes.Word)) .Where(i => i != null) .Count() ); }
public IEnumerable <Word> GetWordsBy(int length) { return(Enumerable.Range(FirstItemPosition, LastItemPosition - FirstItemPosition) .Select(p => TextItemsStore .SingleOrDefault(i => i.Positions.Contains(p) && i.Type == ItemTypes.Word)) .Where(i => i != null) .Cast <Word>() .Where(w => w.Length.Equals(length)) .Distinct()); ; }
public void DeleteWordBy(int wordLength, bool isConsonantLetter) { var words = Enumerable.Range(0, Count) .Select(p => TextItemsStore .SingleOrDefault(i => i.Positions.Contains(p) && i.Type == ItemTypes.Word)) .Where(i => i != null) .Cast <Word>() .Where(w => w.Length.Equals(wordLength)) .Distinct(); if (isConsonantLetter) { words = words.Where(w => Regex.IsMatch(w.Value, CONSONANT_LETTER, RegexOptions.IgnoreCase)); } foreach (var item in words) { Console.WriteLine(item.Value); } var positions = words .SelectMany(w => w.Positions) .OrderBy(p => p) .ToList() ; foreach (var word in words) { TextItemsStore = TextItemsStore .Where(i => !i.Equals(word)).ToList(); } for (int i = 0, temp = 0; i < positions.Count; i++) { var previous = temp; var current = positions[i]; if (i != 0) { for (int position = ++previous; position < current; position++) { TextItemsStore .SingleOrDefault(i => i.Positions.Contains(position)) ?.DisplaceItems(position, i); } } temp = current; } Sentences = GetSentences(); Count = TextItemsStore.Select(i => i.Positions.Count()).Sum(); }
public void PrintToFile(string path) { var textResult = new StringBuilder(); for (int position = 0; position < Count; position++) { var item = TextItemsStore.SingleOrDefault(i => i.Positions.Contains(position)); textResult.Append(item?.Value); } File.WriteAllText(path, textResult.ToString()); }
public void PrintToConsole() { var textResult = new StringBuilder(); for (int position = FirstItemPosition; position <= LastItemPosition; position++) { var item = TextItemsStore.SingleOrDefault(i => i.Positions.Contains(position)); if (item != null && item.Value.Equals(Environment.NewLine)) { item = new SpaceSeparator(new int[] { position }, ItemTypes.SpaceSeparator); } textResult.Append(item?.Value); } Console.WriteLine(textResult.ToString()); }
private SentenceTypes DefineSentenceType(int separatorPosition) { var separatorValue = TextItemsStore .SingleOrDefault(i => i.Positions.Contains(separatorPosition)) .Value ; switch (separatorValue) { case "?!": return(SentenceTypes.InterrogativeExclamatory); case "?": return(SentenceTypes.Interrogative); case "!": return(SentenceTypes.Exlamatory); default: return(SentenceTypes.Declarative); } }