Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2015, 16:52   #1
Таксист
Пользователь
 
Аватар для Таксист
 
Регистрация: 11.12.2014
Сообщений: 66
По умолчанию Подсчёт повторяющихся слов в строке

Здравствуйте, есть огромная строка самого обычного текста, и нужно узнать какие слова встречаются чаще всего и сделать список "Топ 20" самых популярных слов в этой строке. Подскажите, какие способы оптимальные для такого решения. Я использую для подсчета Регулярные выражения, но возможно есть что то выгодней и проще для такой операции?
Таксист вне форума Ответить с цитированием
Старый 18.07.2015, 17:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Напиши в LINQ запрос с группировкой, и примени функцию count. Ну и сортировку по количеству. С LINQ умеешь работать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.07.2015, 17:16   #3
Таксист
Пользователь
 
Аватар для Таксист
 
Регистрация: 11.12.2014
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Напиши в LINQ запрос с группировкой, и примени функцию count. Ну и сортировку по количеству. С LINQ умеешь работать?
Нет, но думаю разберусь, спасибо!
Таксист вне форума Ответить с цитированием
Старый 18.07.2015, 20:48   #4
Таксист
Пользователь
 
Аватар для Таксист
 
Регистрация: 11.12.2014
Сообщений: 66
Радость

Цитата:
Сообщение от Таксист Посмотреть сообщение
Здравствуйте, есть огромная строка самого обычного текста, и нужно узнать какие слова встречаются чаще всего и сделать список "Топ 20" самых популярных слов в этой строке. Подскажите, какие способы оптимальные для такого решения. Я использую для подсчета Регулярные выражения, но возможно есть что то выгодней и проще для такой операции?
Отвечу сам себе, вдруг еще кому нибудь понадобится решение.
1. Строку надо перевести в тип который поддерживает IEnumerable или
IEnumerable<T> для работы с LINQ , например отправить каждое слово строки в массив или как в моем случае в список слов List<String>
Например таким образом, с проверкой на пустоты, передаем строку text

Код:
 IEnumerable<string> wordList = !string.IsNullOrEmpty(text) ? text.Split(' ') : Enumerable.Empty<string>();

2.Подключить using System.Linq;
3. Воспользоватся таким вот лямбда выражением

Код:

var wordList = new List<String> { "test", "one", "test", "two", "test", "test","five"};
           
 var grouped = wordList
                .GroupBy(i => i) 
                .Select(i => new { Word = i.Key, Count = i.Count() }).OrderByDescending(i=>i.Count); 


//Выводим на консоль
            foreach ( var i in grouped) Console.Write(i + " ");
            Console.ReadLine();

Последний раз редактировалось Таксист; 18.07.2015 в 21:00.
Таксист вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчёт слов neBu4kaMaXiM Помощь студентам 2 30.03.2010 10:00
подсчёт слов Светочка132 Помощь студентам 1 27.03.2010 15:59
подсчёт слов neBu4kaMaXiM Фриланс 13 18.03.2010 18:11
Удаление повторяющихся слов C vivo89 Помощь студентам 2 24.12.2009 09:18
по вводу слов в массив и подсчёт введённых слов -ushёl- Общие вопросы C/C++ 4 16.11.2009 00:45