static void Main(string[] args) { const int StringsInPage = 30; string fp = "2001SpaceOdyssey.txt"; Concordance words = new Concordance(); try { using (StreamReader sr = new StreamReader(fp)) { int stringCounter = 0; while (!sr.EndOfStream) { string s = sr.ReadLine(); stringCounter++; string[] splittedString = s.Split(new char[] { '_', '–', '-', '(', ')', '+', '$', '/', '?', '"', ' ', '\'', ',', '.', ':', '!', ';', '\t', '@', '°', '{', '}', '<', '>', '^', '#', '*', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' }); foreach (string ss in splittedString) { if (ss.Trim() != "") { words.Add(ss.ToLower(), (int)(stringCounter / StringsInPage) + 1); } } } } } catch (FileNotFoundException ex) { Console.WriteLine(ex.Message); Console.ReadLine(); } words.SaveReportToFile("report.txt"); }
/// <summary> /// Метод парсит строку /// </summary> /// <param name="str">Строка</param> /// <returns>Список слов</returns> public Concordance Parsers(string[] str) { string result; Concordance list = new Concordance(); var newReg = new Regex("[a-zа-я]+-?[а-яa-z]*"); for (int i = 0; i < str.Count(); i++) { result = str[i].ToLower(); MatchCollection match = newReg.Matches(result); foreach (var mat in match) { list.AddWord(mat.ToString(), i / 10 + 1); } } return(list); }
static void Main(string[] args) { var read = new Reader(); var str = read.Read(); var parser = new Parser(); Concordance concordance = parser.Parsers(str); Result result = new Result(); StringBuilder res = result.Results(concordance); Console.WriteLine(res); Writer writer = new Writer(); writer.Write(res); Console.ReadKey(); }
/// <summary> /// Метод возвращает строку-результат /// </summary> /// <param name="concordance">Конкорданс</param> /// <returns>Строка-результат</returns> public StringBuilder Results(Concordance concordance) { var wordQuery = from word in concordance.GetWords() orderby word.GetWord() select word; var resultBuilder = new StringBuilder(); string letter2 = ""; foreach (var word in wordQuery) { string letter = word.GetWord().Substring(0, 1).ToUpper(); if (letter != letter2) { resultBuilder.Append("\n" + letter + "\n"); letter2 = letter; } resultBuilder.Append(word.GetWord() + " " + word.GetCount() + ":" + word.GetPosition().Aggregate(" ", (current, temp) => current + (temp + " ")) + "\n"); } return(resultBuilder); }