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

Удалить лишние строки в которых есть определенное значение

28.04.2018, 12:07. Показов 1623. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Есть переменная типа String, в ней содержится 900 строк.
формата:
Like= 0 can_post= True can_post_group= True count= 0 | https://vk.com/wall-114391376_239 АТАЧ
Like= 7 can_post= True can_post_group= True count= 2 | https://vk.com/wall-114391376_230 АТАЧ
Like= 1 can_post= True can_post_group= True count= 0 | https://vk.com/wall-134391399_73 АТАЧ

Нужно удалить строки, где повторяются значения между "wall-" и "_".

Сделал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            for (int i = 0; i <find_post_kolichestvo;i++) { //убираем одинаковые овнер ид
                String searh_word = bez_povtorov.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)[i].Replace("\r", "");
                String owner_id = Regex.Match(searh_word, @"(?<=wall)(.*?)(?=_)").ToString(); //значение которое будем искать в след. цикле
                int vhodi = 1;
                              for (int j = 0; j < find_post_kolichestvo; j++)
                {
                    String searh_word2 = bez_povtorov.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries)[j].Replace("\r", "");
                    String owner_id2 = Regex.Match(searh_word2, @"(?<=wall)(.*?)(?=_)").ToString(); // это с чем будем сравнивать
                    if (owner_id2 == owner_id)
                    {
                        //  Console.WriteLine("no double owner id " + owner_id +"вхождений - "+vhodi+ " post "+searh_word);
                        vhodi++;
                       // Console.WriteLine(vhodi);
 
... Тут условие, если значение переменной "vhodi" меньше 2, то записываем строку в переменную Result.. В итоге получаем переменую со строками где не повторяются значения между "wall-" и "_".
                    }
                }
 
            }
Проблема в том, что в циклах прогоняется 900 строк. А это 900 итераций j на каждую итерацию i, итого 900*900= 810000 циклов. Наверное, из-за нагрузки Regex.Match (но это не точно). Процесс идет крайне медленно, в течении 15ти минут я так и не смог дождаться завершения циклов.
Подскажите, пожалуйста, как можно адекватно реализовать мою задачу, что бы не ждать часами?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.04.2018, 12:07
Ответы с готовыми решениями:

Удалить строки в которых есть символ
Здравствуйте Как можно программно реализовать удаление строк (из текстового файла) в которых содержатся символы:

Удалить из строки слова, в которых есть буква 'a'
Создать консольное приложение, в котором можно удалить из строки слова, в которых есть буква 'a'.

Удалить строки, в которых есть определенные слова
Всем доброго времени суток. Такая проблема. Нужно из richTextBox`a удалить все строки в которых есть определенные слова. Пример: Есть...

3
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
28.04.2018, 14:32
Лучший ответ Сообщение было отмечено slay90- как решение

Решение

попробуй так
C#
1
2
3
4
5
6
7
8
9
10
11
            var str = @"Like= 0 can_post= True can_post_group= True count= 0 | https://vk.com/wall-114391376_239 АТАЧ
Like = 7 can_post = True can_post_group = True count = 2 | https://vk.com/wall-114391376_230 АТАЧ
Like = 1 can_post = True can_post_group = True count = 0 | https://vk.com/wall-134391399_73 АТАЧ
";
            var result = str.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).
                GroupBy(x => Regex.Match(x, @"wall-(\d+)_").Groups[1].ToString()).
                Where(x => x.Count() == 1).Select(x => x.FirstOrDefault()).ToList();
            foreach(var item in result)
            {
                Console.WriteLine(item);
            }
1
0 / 0 / 1
Регистрация: 26.04.2018
Сообщений: 7
28.04.2018, 15:42  [ТС]
Спасибо, мил человек! За секунды всё обработалось!

Добавлено через 13 минут
Балин! Это удаляет все строки если они повторяются, включаю ту в которой было найдено первое совпадение.

На выводе получаю: только
Like= 1 can_post= True can_post_group= True count= 0 | https://vk.com/wall-134391399_73 АТАЧ

А нужно:
Like= 0 can_post= True can_post_group= True count= 0 | https://vk.com/wall-114391376_239 АТАЧ
Like= 1 can_post= True can_post_group= True count= 0 | https://vk.com/wall-134391399_73 АТАЧ
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
28.04.2018, 15:44
удали Where(x => x.Count() == 1).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.04.2018, 15:44
Помогаю со студенческими работами здесь

Удалить все строки матрицы, в которых есть цифра 5
Помогите решить Дан двумерный массив размером 5 * 7, заполненный случайным образом. Удалить все строки, в которых есть цифра 5

Удалить все строки матрицы, в которых есть цифра 5
1Удалить в упорядоченном по убыванию массиве числа меньшие или равные среднему арифметическому элементов массива. 2.Дан двумерный массив...

Удалить все строки двумерного массива, в которых есть хотя бы один нулевой элемент
Как реализовать двумерный массив с помощью ДСЧ и вручную и выполнить это действия? 2)Удалить все строки, в которых есть хотя бы один...

Дан двумерный массив целых чисел. Удалить строки, в которых есть элементы, принадлежащие промежутку [а, в]
Помогите задачку решить. Дан двумерный массив целых чисел. Удалить строки, в которых есть элементы, принадлежащие промежутку

Как удалить лишние пробелы из строки
Здравствуйте! У меня есть строка, в которой может быть больше одного пробела между словами. Как удалить эти лишние пробелы?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru