Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 09.12.2014
Сообщений: 112

Удалить из сообщения все повторяющиеся слова (без учета регистра)

19.10.2015, 19:28. Показов 2582. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. Удалить из сообщения все повторяющиеся слова (без учета регистра).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2015, 19:28
Ответы с готовыми решениями:

Удалить из сообщения все повторяющиеся слова (без учета регистра)
Помогите пожалуйста! Почему программа работает только при конкретных(некоторых) предложениях, в других случаях неправильно находит. ...

Удалить из сообщения все повторяющиеся слова (без учета регистра)
Ребят здравствуйте! Вот код моей программы StreamReader sr = File.OpenText(AppDomain.CurrentDomain.BaseDirectory +...

Удалить из сообщения все повторяющиеся слова (без учета регистра)
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются пробелами и знаками препинания. Удалить из...

8
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
19.10.2015, 20:00
Я так понимаю, что структуру сообщения менять нельзя? Или вам просто надо найти слова-не дубликаты?
0
2 / 2 / 1
Регистрация: 09.12.2014
Сообщений: 112
19.10.2015, 20:20  [ТС]
например: на столе лежали зеленый лук , зеленый чай (Это мы вводим с клавиатуры).
ответ должен быть таков: на столе лежали лук , чай.
0
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
19.10.2015, 20:25
Т.е. мы удаляем все слова, которые повторяются больше 1 раза?
0
2 / 2 / 1
Регистрация: 09.12.2014
Сообщений: 112
19.10.2015, 20:39  [ТС]
да, удаляем
0
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238
19.10.2015, 21:11
Например:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
static void Main(string[] args)
        {
            string str = "На столе лежали зелёный лук, зелёный чай.";
            List<string> strList = new List<string>(str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            
            for (int i = 0; i < strList.Count; i++)
            {
                List<string> result = strList.FindAll(x => x.ToUpper().Equals(strList[i].ToUpper()));
                if(result.Count > 1) strList.RemoveAll(x => x.ToUpper().Equals(result[0].ToUpper()));       
            }
 
            foreach (var elt in strList) Console.WriteLine(elt);     
        }
0
2 / 2 / 1
Регистрация: 09.12.2014
Сообщений: 112
19.10.2015, 21:16  [ТС]
ох, очень сложно все написано
спасибо
0
 Аватар для Ieroglif
19 / 19 / 2
Регистрация: 23.06.2011
Сообщений: 238
19.10.2015, 21:24
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void Main(string[] args)
        {
            string str = "На столе лежали зелёный лук, зелёный чай.";
            //формируем список строк, каждым элементом которого будет являться отдельное слово, исключая при этом пробелы
            List<string> strList = new List<string>(str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            
            for (int i = 0; i < strList.Count; i++)//просматриваем список
            {
                //формируем новый список, в который кидаем все слова, эквивалентные просматриваемому (включая его само)
                List<string> result = strList.FindAll(x => x.ToUpper().Equals(strList[i].ToUpper()));
                //в случае, если есть дубликаты - удаляем
                if(result.Count > 1) strList.RemoveAll(x => x.ToUpper().Equals(result[0].ToUpper()));       
            }
 
            foreach (var elt in strList) Console.WriteLine(elt);     
        }
0
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
19.10.2015, 22:48
Ieroglif, посмотрите внимательно, что ответил ТС на мой вопрос:
Цитата Сообщение от лалка123 Посмотреть сообщение
на столе лежали зеленый лук , зеленый чай.
на столе лежали лук , чай.
лалка123, вообщем вот что у меня получилось (единственная проблема с пробелами по окончанию, хотя можно попробовать сделать проверку на пробел перед удаляемой фразой и на пробел за ней, если оба есть - заменить на 1)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
    class Program
    {
        public static string DeleteDuplicateWords(string input)
        {
            var punctuation = input.Where(char.IsPunctuation).Distinct().ToArray();
            var words = input.Split()
                .Select(x => x.Trim(punctuation))
                .GroupBy(c => c.ToUpperInvariant()).ToDictionary(g => g.Key, g => g.Count())
                .Where(pair => pair.Value > 1).Select(pair => pair.Key)
                .ToList(); 
            return words.Aggregate(input, (s, del) => Regex.Replace(s, Regex.Escape(del), string.Empty, RegexOptions.IgnoreCase));
        }
        
        private static void Main()
        {
            const string str = "на столе лежали зеленый лук , Зеленый чай";
            Console.WriteLine(DeleteDuplicateWords(str));
            Console.ReadLine();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2015, 22:48
Помогаю со студенческими работами здесь

Удалить из сообщения все повторяющиеся слова (без учета регистра)
Приветствую! Очень нужна помощь, не могу разобраться. Надо написать программу, где нужно удалить из сообщения все повторяющиеся слова...

Удалить из сообщения все повторяющиеся слова (без учета регистра)
Есть подобные темы, но решения нет. Удалить из сообщения все повторяющиеся слова (без учета регистра). Жирным выделена проблема....

Удалить из сообщения все повторяющиеся слова (без учета регистра) кроме первого вхождения
Здравствуйте, подскажите, что не так Использую для удаления one = string.Join(&quot; &quot;, one.Split(' ').Distinct()); но выводит...

Удалить из сообщения все повторяющиеся слова (без учета регистра) кроме первого вхождения
1. Удалить из сообщения все повторяющиеся слова (без учета регистра) кроме первого вхождения. private void button2_Click(object sender,...

Удалить из сообщения все слова, содержащие данный символ (без учета регистра)
Удалить из сообщения все слова, содержащие данный символ (без учета регистра).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru