static void Main() { string text = File.ReadAllText("C:/Users/svlozovskoy/source/repos/ConsoleApp3/ConsoleApp3/Program.cs"); // читаем файл в строку string[] allwords = text.Split(' ', ',', '"', '.', '<', '>', '(', ')', '[', ']'); // делим в строке слова по разделителю split и пишем их в массив allwords int count = 0; //метрика кол-ва вхождений слова в массив string[] words = { "while", "break", "char", "as", "byte", "checked", "bool", "const", "catch", "base", "case", "class", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected","public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", "volatile", "abstract" }; //ключевые слова из доки ms Array.Sort(words); //Сортируем массив words по алфавиту по возрастанию string count_string; Dictionary <string, string> final = new Dictionary <string, string>(); List <string[]> result = new List <string[]>(); int m = words.Length; //переменная метрики длинны массива ключевых слов. string[,] result_table = new string[m, 2]; // переменная result_table, являющаяся двумерным массивом m*2. все элементы - string for (int i = 0; i < m - 1; i++) { string word = words[i];//на каждой итерации получаем новое слово для анализа из массива words foreach (string s in allwords) { if (s == word) { count++; //проверяем совпадает ли текущее слово с словами из массива words } } count_string = count.ToString(); //приводим int к string result.Add(new string[] { word, count_string }); count = 0; //сбрасываем метрику } OutputList(result); CountComparer CountWord = new CountComparer(); result.Sort(CountWord); Console.WriteLine(); Console.ReadLine(); }
static void Main(string[] args) { try //вводится для того, чтобы обработать исключение { //комент для теста слова abstract string textFromFile = File.ReadAllText(args[0]); // читаем файл в строку. файл передается как параметр //Паттерн для регулярного выражения исключающего коменты из текста string pattern = @"(?x) // ( "" (?> (?<=@.) (?>[^""]+|"""")* | (?> [^""\\]+ | \\. )* ) "" | ' (?> [^'\\]+ | \\. )* ' ) | // .* | /\* (?s) .*? \*/ "; textFromFile = Regex.Replace(textFromFile, pattern, "$1"); string[] listOfWords = textFromFile.Split(' ', ',', '.', '<', '>', '(', ')', '[', ']'); // делим в строке слова по разделителю split и пишем их в массив allwords int wordsCount = 0; //метрика кол-ва вхождений слова в массив string[] keyWords = { "while", "break", "char", "as", "byte", "checked", "bool", "const", "catch", "base", "case", "class", "continue", "decimal", "default", "delegate", "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", "in", "int", "interface", "internal", "is", "lock", "long", "namespace", "new", "null", "object", "operator", "out", "override", "params", "private", "protected","public", "readonly", "ref", "return", "sbyte", "sealed", "short", "sizeof", "stackalloc", "static", "string", "struct", "switch", "this", "throw", "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "virtual", "void", "volatile", "abstract" }; //ключевые слова из доки ms Array.Sort(keyWords); //Сортируем массив words по алфавиту по возрастанию string wordsCount_string; // переменная для хранения кол-ва в виде строки List <string[]> resultList = new List <string[]>(); // коллекция для хранения результата программы int m = keyWords.Length; //переменная метрики длинны массива ключевых слов. for (int i = 0; i < m - 1; i++) { string word = keyWords[i];//на каждой итерации получаем новое слово для анализа из массива words foreach (string s in listOfWords) { if (s == word) { wordsCount++; //проверяем совпадает ли текущее слово с словами из массива words } } wordsCount_string = wordsCount.ToString(); //приводим int к string resultList.Add(new string[] { word, wordsCount_string }); //записываем слово и кол-во wordsCount = 0; //сбрасываем метрику } OutputList(resultList); //выводим список, через созданный ранее метод CountComparer CountWord = new CountComparer(); //компаратор resultList.Sort(CountWord); // сортировка своим компаратором Console.WriteLine("Топ 5 слов: "); for (int i = 0; i < 5; i++) { Console.WriteLine("{0}", resultList[i]);//вывод пяти самых частых слов } Console.WriteLine(); } catch //Обработка исключения если файл не задан { Console.WriteLine("Извините, вы не указали файл. При запуске программы укажите KeyWords.exe Filename (Где Filename имя целевого файла)"); } }