Как проверить в списке запись

biryukovm

Client
Регистрация
19.05.2019
Сообщения
147
Благодарностей
10
Баллы
18
Привет всем.

Вот к примеру у меня есть список 1 и мне надо туда сделать запись.

Но прежде чем делать запись я хочу убедиться что точно такой же строки там не существует.

Как я могу это проверить ?

Записать и удалить потом дубли это как вариант но не логичный так как надо делать по уму я думаю )).
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 630
Благодарностей
8 768
Баллы
113
Привет всем.

Вот к примеру у меня есть список 1 и мне надо туда сделать запись.

Но прежде чем делать запись я хочу убедиться что точно такой же строки там не существует.

Как я могу это проверить ?

Записать и удалить потом дубли это как вариант но не логичный так как надо делать по уму я думаю )).
Можно объединить список в переменную и потом регляркой проверить наличие строки,
которую нужно добавить, затем по IF (проверка на пустоту) проверить, есть ли вхождение.
Если вхождение есть, то не добавляем, если нет - добавляем.
 
  • Спасибо
Реакции: biryukovm

orka13

Client
Регистрация
07.05.2015
Сообщения
2 170
Благодарностей
2 172
Баллы
113
Или на C# готовый мини-код. В проекте должен быть список с именем "IP_Real_List" и переменная с именем "IP_Real":
C#:
IZennoList Proxylist = project.Lists["IP_Real_List"]; // тут указываем свой список
lock(SyncObjects.ListSyncer)
{
    if (Proxylist.Contains(project.Variables["IP_Real"].Value)) {
        throw new Exception("Строка есть в списке"); // раз список содержит нашу строку (переменная "IP_Real"), то выходим по красной ветке (как при ошибке)
        }
    else {
        // если список Не содержит строку, то добавляем ее в список в конец:
        Proxylist.Add(project.Variables["IP_Real"].Value);
        return "Строки не было в списке, но мы ее добавили";
        }
}
 
Последнее редактирование:

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 344
Благодарностей
5 433
Баллы
113

orka13

Client
Регистрация
07.05.2015
Сообщения
2 170
Благодарностей
2 172
Баллы
113
Не очень надежный метод. Были случаи когда не корректно отрабатывал. Может уже пофиксили, не знаю. Надежнее на регулярки заменить.
Чуть подробнее можно?
Просто при работе со списком "Contains" выбирает только идентичные строки (типа как ==). А при работе с переменными она в буквальном смысле "вхождение" искомого текста ищет, типа как строка 777 входит в строку 123777555. Именно это пугает? или есть какие-то явные глюки?
 
Последнее редактирование:

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 344
Благодарностей
5 433
Баллы
113

orka13

Client
Регистрация
07.05.2015
Сообщения
2 170
Благодарностей
2 172
Баллы
113
Ну тогда все ок. Ибо если вдуматься что мы сравниваем, то все правильно. "Содержит ли список наш текст" это как раз тоже что и "есть ли в нашем списке хоть одна строка которая идентична полностью нашему тексту". А не "есть ли в нашем списке хоть одна строка которая содержит в себе наш текст (но может быть и длиннее его)".
Надо просто смирится что в C# если "строка списка содержит наш текст", то это НЕ обязательно означает что "список содержит наш текст".
 
  • Спасибо
Реакции: Mikhail B.

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)