Категории
Самые читаемые
ChitatKnigi.com » 🟢Компьютеры и Интернет » Базы данных » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
1 ... 289 290 291 292 293 294 295 296 297 ... 642
Перейти на страницу:

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать

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>  // Загрузить электронную книгу Чарльза Диккенса &quot;A Tale of Two Cities&quot;.</b>

<b>  // Может понадобиться двукратное выполнение этого кода, если ранее вы</b>

<b>  // не посещали данный сайт, поскольку при первом его посещении появляется</b>

<b>  // окно с сообщением, предотвращающее нормальное выполнение кода.</b>

  wc.DownloadStringAsync(new Uri(&quot;http://www.gutenberg.org/

  files/98/98-8.txt&quot;));

}

Класс WebClient определен в пространстве имен System.Net. Он предоставляет несколько методов для отправки и получения данных от ресурса, идентифицируемого посредством URL. В свою очередь многие из них имеют асинхронные версии, такие как метод DownloadStringAsync(), который автоматически порождает новый поток из пула потоков .NET Core Runtime. Когда объект WebClient завершает получение данных, он инициирует событие DownloadStringCompleted, которое обрабатывается с применением лямбда-выражения С#. Если вызвать синхронную версию этого метода (DownloadString()), то сообщение Downloading book... не появится до тех пор, пока загрузка не завершится.

Далее реализуйте метод GetStats() для извлечения индивидуальных слов, содержащихся в переменной theEBook, и передачи строкового массива на обработку нескольким вспомогательным методам:

void GetStats()

{

<b>  // Получить слова из электронной книги.</b>

  string[] words = _theEBook.Split(new char[]

    { ' ', 'u000A', ',', '.', ';', ':', '-', '?', '/' },

    StringSplitOptions.RemoveEmptyEntries);

<b>  // Найти 10 наиболее часто встречающихся слов.</b>

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  string[] tenMostCommon = FindTenMostCommon(words);

<b>  // Получить самое длинное слово.</b>

  string longestWord = FindLongestWord(words);

<b>  // Когда все задачи завершены, построить строку, показывающую</b>

<b>  // все статистические данные в окне сообщений.</b>

  StringBuilder bookStats =

      new StringBuilder(&quot;Ten Most Common Words are:n&quot;);

  foreach (string s in tenMostCommon)

  {

    bookStats.AppendLine(s);

  }

  bookStats.AppendFormat(&quot;Longest word is: {0}&quot;, longestWord);

                       // Самое длинное слово

  bookStats.AppendLine();

  Console.WriteLine(bookStats.ToString(), &quot;Book info&quot;);

                                        // Информация о книге

}

Метод FindTenMostCommon() использует запрос LINQ для получения списка объектов string, которые наиболее часто встречаются в массиве string, а метод FindLongestWord() находит самое длинное слово:

string[] FindTenMostCommon(string[] words)

{

    var frequencyOrder = from word in words

                         where word.Length &gt; 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:

Defarge

himself

Manette

1 ... 289 290 291 292 293 294 295 296 297 ... 642
Перейти на страницу:
Отывы о книге
Открыть боковую панель
Комментарии
Ксения
Ксения 25.01.2025 - 12:30
Неплохая подборка книг. Прочитаю все однозначно.
Jonna
Jonna 02.01.2025 - 01:03
Страстно🔥 очень страстно
Ксения
Ксения 20.12.2024 - 00:16
Через чур правильный герой. Поэтому и остался один
Настя
Настя 08.12.2024 - 03:18
Прочла с удовольствием. Необычный сюжет с замечательной концовкой
Марина
Марина 08.12.2024 - 02:13
Не могу понять, где продолжение... Очень интересная история, хочется прочесть далее