Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
16 / 9 / 1
Регистрация: 16.11.2021
Сообщений: 115
Записей в блоге: 3

Сортировка. Выбрать из множества имен уникальные. Исключить повторы

21.11.2022, 00:57. Показов 453. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Этот метод получает текст, в котором попадаются названия файлов. Все названия файлов выбираются и записываются в массив. Потом идет перебор массива циклом foreach и высыпаются в консоль все названия. Я вот пытался придумал сортировку, и она вроде работает, но сравнивает по предыдущему, а надо глобально. У меня сейчас, если первое и десятое имя одинаковые, то все....они оба уйдут в результат. Дальше ступор....начал циклы в циклах городить и прочий бред.
Подскажите пожалуйста как это сделать?
Вот код :
Кликните здесь для просмотра всего текста

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
27
28
29
30
31
public void Method(string content)
        {
            string s = content;
            Regex regex = new Regex(@"(\w+)\.(moho|psd|jpg|wav|mp4)");
            MatchCollection matches = regex.Matches(s);
            string b = "";
            string a = "";
            string b1 = "";
            string a1 = "";
 
            if (matches.Count > 0)
            {
                foreach (Match match in matches)
                {
                   // в нынешнем состоянии все работает но сравнение идет по предыдущему.
                   // И если через 10 итераций навание повторится- программа его пропустит и это печаль.
                    a = Convert.ToString(match);
                    bool result = String.Equals(a, b);
                    //Console.WriteLine(result);
                    if (result ==false)
                    {
                        Console.WriteLine(match);
                    }
                    b = a;
                }
            }
            else
            {
                Console.WriteLine("Совпадений не найдено");
            }
        }



Вот мусор который пасится, просто для образца, кусок текста бессмысленный.
Кликните здесь для просмотра всего текста

JSON
1
2
3
4
5
6
7
8
,"t":0}]},"physics":{"enabled":true,"static":false,"sleeping":false,"respawn":0,"velocity":{"x":0.0,"y":0.0},"density":1.0,"friction":0.3,"restitution":0.5,"pivot":false,"enable_motor":false,"motor_speed":[{"im":0,"v1":0.1,"v2":0.5,"in":1,"h":0,"s":false,"t":0}]},"physics_nudge":{"type":"Vec2","ref":false,"mute":false,"when":[0],"val":[{"x":0.0,"y":0.0}],"interp":[{"im":0,"v1":0.1,"v2":0.5,"in":1,"h":0,"s":false,"t":0}]}},"layer_effects":{"visibility":{"type":"Bool","ref":false,"mute":false,"when":[0],"val":[true],"interp":[{"im":0,"v1":0.1,"v2":0.5,"in":1,"h":0,"s":false,"t":0}]},"blur":{"type":"Val","ref":false,"mute":false,"when":[0],"val":[0.0],"interp":[{"im":0,"v1":0.1,"v2":0.5,"in":1,"h":0,"s":false,"t":0}]},"alpha":{"type":"Val","ref":false,"mute":false,"when":[0],"val":[1.0],"interp":[{"im":0,"v1":0.1,"v2":0.5,"in":1,"h":0,"s":fals
 image.moho image2.psd image2.psd image2.psd image2.psd image2.psd image2.psd image2.psd image2.psd    image2.png image2.png image2.png image2.png  image2.png
 image.moho
 image.moho
 image.moho
 image.moho
 image.moho
 image.moho



Вот нашел
Найти уникальные элементы массива (есть повторяющиеся элементы) и поместить их в другой массив


Но неполучается как в той теме. Там числа просто сравниваются. И массив другой. У меня коллекция. Там в массиве свойство Lengtch, а я в своей коллекции пытаюсь заменить на Count и какая то ерунда получается.

Кликните здесь для просмотра всего текста

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public void Method(string content)
        {
            string s = content;
            Regex regex = new Regex(@"(\w+)\.(moho|psd|jpg|wav|mp4)");
            MatchCollection matches = regex.Matches(s);
        
                var notUniqueElements = 0;      //Счётчик не уникальных элементов
                
                for (int i = 1; i < matches.Count; i++)
                {
                    for (int a = i - 1; a >= 0; a--)
                    {
                        if (matches[i] == matches[a])   //Проверяем элемент на уникальность
                        {
                            notUniqueElements++;     //Если такой элемент уже есть, считаем его
                            break;                             //И переходим к следующему элементу
                        }
                    }
                }
                string[] uniqueArray = new string[matches.Count - notUniqueElements]; // Массив уникальных элементов
                uniqueArray[0] = Convert.ToString(matches[0]);   //Первый элемент уже уникальный, записываем его
                for (int i = 1, b = 1; i < matches.Count; i++)
                {
                    var uniqueElement = true;   //Для проверки на уникальность
                    for (int a = i - 1; a >= 0; a--)
                    {
                        if (matches[i] == matches[a])    //Делаем тоже самое, только для записи уникальных чисел в массив
                        {
                            uniqueElement = false;  //Если элемент не уникальный
                            break;                          //Пропускаем его
                        }
                    }
                    if (uniqueElement)                        //Если уникальный
                    {
                        uniqueArray[b] = Convert.ToString(matches[i]);    // Запись уникального элемента в массив
                        b++; //Индекс для записи в массив уникальных чисел
                    }
                }
                foreach (var el in uniqueArray)      // Вывод элементов на консоль
                {
                    Console.WriteLine(el);
                }
 
                
            
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2022, 00:57
Ответы с готовыми решениями:

Исключить повторы
Здравствуйте, у меня есть код, генерирующий комбинации наборов символов: using System; using System.Collections.Generic; using...

Исключить повторы в массиве
Привет. Есть массив Array ( =&gt; 794 =&gt; 794,700 =&gt; 794,700 =&gt; 794 ) Подскажите как превратить его в такой...

Исключить повторы в тексте
Необходимо исправить каждый повтор (слово, один или несколько пробельных символов, и снова то же слово).

4
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
21.11.2022, 01:29
Лучший ответ Сообщение было отмечено Leshakk как решение

Решение

Почему не используете HashSet<string>? Религия не позволяет или какие-то другие убеждения имеются?

C#
1
2
3
4
5
6
7
8
9
10
11
        public void Method(string content)
        {
            MatchCollection matches = Regex.Matches(content, @"(\w+)\.(moho|psd|jpg|wav|mp4)");
            HashSet<string> list = new HashSet<string>();
 
            foreach (Match match in matches)
                list.Add(match.Value);
 
            foreach (var el in list)
                Console.WriteLine(el);
        }
1
16 / 9 / 1
Регистрация: 16.11.2021
Сообщений: 115
Записей в блоге: 3
21.11.2022, 01:32  [ТС]
Я просто не знаю что это. Пошел гуглить. Спасибо!

Ого мощь какая! в три строчки! Спасибище!
0
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066
21.11.2022, 05:35
Цитата Сообщение от Someone007 Посмотреть сообщение
Религия не позволяет или какие-то другие убеждения имеются?
Причем тут религия?
C#
1
2
3
4
5
6
7
8
9
10
public void Method (string content)
{
    MatchCollection matches = Regex.Matches (content, @"(\w+)\.(moho|psd|jpg|wav|mp4|png)");
    var list = new List<string>();
 
    foreach (Match match in matches)
        list.Add (match.Value);
 
    Console.WriteLine (String.Join("\r\n", list.Distinct()));
}
То-же самое, но вид с боку.
1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
21.11.2022, 07:29
Цитата Сообщение от Doomov Посмотреть сообщение
То-же самое, но вид с боку.
Не то же самое. Как минимум больше бесполезных аллокаций...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2022, 07:29
Помогаю со студенческими работами здесь

Исключить из массива повторы значений
Задача такова: Помогите исправить функцию, делающая преобразования с массивом В, пожалуйста) #include &quot;stdafx.h&quot; ...

Исключить повторы из выборки в запросе
Здравствуйте, Подскажите, пожалуйста, нужно из выборки получить значение коэффициента, но в выборке эти коэффициенты могут...

Исключить повторы между разными массивами
Всем доброго времени суток. Задача следующего типа, есть список файлов, к примеру их 7. В каждом файле могут быть совпадения с данными...

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

Нужно напутствие чтобы исключить повторы resultset в методе с sql запросом
здравствуйте. Есть запрос Sql, который выводит данные с трех таблиц. Проблема в том что когда читаю по данному алгоритму значения из...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
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 и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru