Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
using System;using System.Linq;using System.Threading;using System.Threading.Tasks;using System.Net;using System.Text;string _theEBook = "";GetBook();Console.WriteLine("Downloading book...");Console.ReadLine();void GetBook(){ WebClient wc = new WebClient(); wc.DownloadStringCompleted += (s, eArgs) => { _theEBook = eArgs.Result; Console.WriteLine("Download complete."); GetStats(); };<b> // Загрузить электронную книгу Чарльза Диккенса "A Tale of Two Cities".</b><b> // Может понадобиться двукратное выполнение этого кода, если ранее вы</b><b> // не посещали данный сайт, поскольку при первом его посещении появляется</b><b> // окно с сообщением, предотвращающее нормальное выполнение кода.</b> wc.DownloadStringAsync(new Uri("http://www.gutenberg.org/ files/98/98-8.txt"));}Класс
WebClientSystem.NetDownloadStringAsync()WebClientDownloadStringCompletedDownloadString()Downloading book...Далее реализуйте метод
GetStats()theEBookvoid GetStats(){<b> // Получить слова из электронной книги.</b> string[] words = _theEBook.Split(new char[] { ' ', 'u000A', ',', '.', ';', ':', '-', '?', '/' }, StringSplitOptions.RemoveEmptyEntries);<b> // Найти 10 наиболее часто встречающихся слов.</b> string[] tenMostCommon = FindTenMostCommon(words);<b> // Получить самое длинное слово.</b> string longestWord = FindLongestWord(words);<b> // Когда все задачи завершены, построить строку, показывающую</b><b> // все статистические данные в окне сообщений.</b> StringBuilder bookStats = new StringBuilder("Ten Most Common Words are:n"); foreach (string s in tenMostCommon) { bookStats.AppendLine(s); } bookStats.AppendFormat("Longest word is: {0}", longestWord); // Самое длинное слово bookStats.AppendLine(); Console.WriteLine(bookStats.ToString(), "Book info"); // Информация о книге}Метод
FindTenMostCommon()stringstringFindLongestWord()string[] FindTenMostCommon(string[] words){ var frequencyOrder = from word in words where word.Length > 6 group word by word into g orderby g.Count() descending select g.Key; string[] commonWords = (frequencyOrder.Take(10)).ToArray(); return commonWords;}string FindLongestWord(string[] words){ return (from w in words orderby w.Length descending select w) .FirstOrDefault();}После запуска проекта выполнение всех задач может занять внушительный промежуток времени, что зависит от количества процессоров в машине и их тактовой частоты. В конце концов, должен появиться следующий вывод:
Downloading book...Download complete.Ten Most Common Words are:DefargehimselfManette