Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536

Поиск в списке строк

20.06.2014, 00:47. Показов 5392. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Итак, заполнил я из двух файлов списки.
Допустим, строка представляет собой вид a;b;c;123;d;e в одном файле.
В другом a;b;123;231
Мне необходимо найти элементы в первом списке, в котором 5ый столбец d, например, и если там d, то взять из списка номер, который на примере 123.
Потом найти записи во втором списке, где встречается этот номер и удалить их.
Пробовал делать через форы и ифы, но опять ругается на выход индекса за пределы.
Как это сделать Find u FindAll подскажите достаточно в кратце, пожалуйста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2014, 00:47
Ответы с готовыми решениями:

Быстрый поиск строки в списке строк
Здравствуйте. Необходимо реализовать быстрый поиск строки в списке строк в целях исследования (изучения) на Java. Теперь подробнее. ...

Поиск недостающих элементов в списке строк
Здравствуйте Очень прошу помочь, потому как уже голову сломал. Дано некоторое количество файлов с именами типа...

Быстрый поиск строки в списке строк с предварительным хешированием
Здравствуйте. Необходимо реализовать быстрый поиск строки в списке строк с предварительным хешированием в целях исследования (изучения). ...

7
 Аватар для NetFR
46 / 46 / 32
Регистрация: 10.05.2013
Сообщений: 180
20.06.2014, 01:02
Так а в чем конкретно проблема? Строку можно разбить в массив через Split(), благо разделители между элементами есть. После удалить n-й элемент из другого массива и записать результат в файл.

Ага, нашел старую тему. Там вы разбиваете как и описано выше.
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
20.06.2014, 03:53  [ТС]
Есть
C#
1
List<string[]>
В котором уже строки, разбитые на элементы по разделителям.
Есть еще один такой же, с другими данными.
Надо из первого вычленить одно поле, найдя его по другому полю.
Потом Найти это поле среди 2-х возможных полей второго списка и удалить эту строку из второго целиком.

Добавлено через 17 минут
Почти разобрался. Осталось еще 2 списка для полноты ощущений и путаницы сделать ахах.

Добавлено через 26 минут
не пойму кое-что. Есть у меня список скажем
C#
1
List<string[]>
a;b;c;123;124
b;c;d;124;125
a;c;e;125;128
a;b;f;126;127
Есть у меня еще список
C#
1
List<string>
где есть скажем есть только
125
127
Мне надо из второго считать данные эти и если встречаются в первом списке такие, то удалить всю строку целиком.

Добавлено через 43 минуты
Разобрался как удалить. Через индексы сделал.

Добавлено через 36 минут
Подскажите, пожалуйста, как мне теперь из List<string[]> сделать List<string> обратно?
Переделывать все опять не хочется, геморрно, если из второго варианта по индексу удалять, опять индекс за пределы выходит. В общем как бы мне сконкатенировать массив в список ахах

Добавлено через 40 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            foreach (string reflr in refLR)
            {
                string newLine = "1;;система;";
                foreach (string left in refLeft)
                {
                    newLine += (left+";");
                    foreach (string right in refRight)
                    {
                        newLine += right;
                        refLR.Add(newLine);
                    }
                }                
            }
расскажите пожалуйста почему в refLR ноль элементов по-прежнему. Что-то я не понимаю. refLeft refRight списки строкового типа, как и refLR.
Хочу получить список строк вида 1;;f;1332;24124, не хочет его заполнять.
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
20.06.2014, 04:01
Посмотрите методы Contains() , IndexOf(), Remove(), вроде их должно хватить.
Цитата Сообщение от Slip. Посмотреть сообщение
расскажите пожалуйста почему в refLR ноль элементов по-прежнему.
Вы внутри foreach пытаетесь изменить список, с которым работает foreach (refLR), так нельзя.
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
20.06.2014, 12:23  [ТС]
Переместил, заработало. Add-ом заработало. Переместил туда, где выясняю какие нужно выбрать.
Единственное, что все принципы ооп посылаю куда по-дальше ахах, аж как-то совестно.

Добавлено через 5 часов 42 минуты
Нет, господа. Что-то я напрочь отказываюсь понимать способы удаления элементов из списка.
Допустим есть список List<string[]>, состоящий из 500 строковых массивов.
Допустим есть список List<string[]>, состоящий из 200 строковых массивов из предыдущего списка, которые оттуда надо удалить.
Я должен сравнить элементы и удалить, которые равны.
Только вот я никак не пойму эту систему предикатов метода Remove, а через индексы все-таки неправильно удаляет.
Решить бы этот вопрос и все бы работало на ура, вроде как.
К слову, через индексы пытался так:
C#
1
2
3
4
5
6
7
8
9
10
            int indNodes = 0;
            foreach (string[] line in noneedLines)
            {
                foreach (string[] lin in Nodes)
                {
                        if (lin == line)
                            indNodes = Nodes.IndexOf(lin);                
                }
                Nodes.RemoveAt(indEdges);
            }
Идея, вроде, неплохая, но получается ерунда полнейшая.

Добавлено через 2 часа 32 минуты
Сделал уже даже 2 List<string> по 500 и 200 элементов примерно. Необходимо теперь из 500 эти 200 удалить. Не пойму как.
0
 Аватар для Spawn
995 / 893 / 354
Регистрация: 24.03.2014
Сообщений: 2,381
Записей в блоге: 2
20.06.2014, 14:13
Цитата Сообщение от Slip. Посмотреть сообщение
Необходимо теперь из 500 эти 200 удалить. Не пойму как.
При поиске складываем то, что нужно будет удалить в отдельный массив, а по завершению уже удаляем.
0
 Аватар для Lexeq
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
20.06.2014, 20:46
Если я правильно понял, то можно например так
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
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list1 = new List<string>(new string[]{"a;b;c;123;124","b;c;d;124;125","a;c;e;125;128","a;b;f;126;127"});
            List<string> list2 = new List<string>(new string[] {"125","127"});
            List<string> itemToRemove = new List<string>();
            foreach (string item1 in list1) {
                foreach (string item2 in list2) {
                    string pattern = "(;" + item2 + ";)|(;" + item2 + "$)";
                    if (Regex.IsMatch(item1,pattern))
                    {
                        itemToRemove.Add(item1);
                        break;
                    }
                }
            }
            foreach (string item in itemToRemove) {
                list1.Remove(item);
            }
            Console.ReadKey();
        }
    }
}
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
21.06.2014, 01:35  [ТС]
Это, конечно, хорошо. И я бы так и сделал, если бы возможных шаблонов заполнения не было бы порядка 15 штук
Недавно понял, что можно просто записывать нужные, А не пытаться удалять ненужные. Как минимум для одного списка это подойдет скорее всего.

Добавлено через 2 часа 52 минуты
Всем спасибо большое. Работает все. За небольшими исключениями, конечно, но ничего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2014, 01:35
Помогаю со студенческими работами здесь

Повторы строк в списке
Пытаюсь сделать удаление повторяющихся строк var i, j : integer; begin Memo1.Lines.BeginUpdate; i :=...

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

Размер строк в списке
Пробую написать некое подобие зума строк в списке. Написал свой адаптер. Задаю сложные (многокомпонентные) строки списка как xml. ...

Объединение строк в списке
Здравствуйте, подскажите, пожалуйста, новичку на Пайтоне. Есть список: data = нужно склеить каждые два элемента между собой и получить...

Поиск в списке
Функция 'vhodit' возвращает T если ее первый аргумент входит в список второго аргумента, в другом случае возвращает nil &gt; poisk 'd...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
[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 и. . .
Как дизайн сайта влияет на конверсию: 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-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru