Сравнение списков

kagorec

Client
Регистрация
24.08.2013
Сообщения
916
Благодарностей
470
Баллы
63
Ну ничего особо крутого)

Работы экшена If: сравнение двух текстовых зачений.

Берем одну строку, вторую, сравниваем.
Обязательно переменные заключать в кавычки.
Для сравнения чисел: строго без кавычек.
Подскажите пожалуйста более продуктивное решение задачи сравнивания чтоб не зависало на долго при сравнении например со списком когда в нем более 10.000 строк
Например сниппет для проверки по "белому списку"
 

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
Подскажите пожалуйста более продуктивное решение задачи сравнивания чтоб не зависало на долго при сравнении например со списком когда в нем более 10.000 строк
Например сниппет для проверки по "белому списку"
объединяешь список в переменную и проходишься нужным regex выражением по этой переменной.
 
  • Спасибо
Реакции: kagorec

C2H5OH

Client
Регистрация
30.09.2014
Сообщения
55
Благодарностей
26
Баллы
18
Вроде все пересмотрел, но так и не понял.
Есть список сайтов. Я спарсил второй список. Их нужно сравнить. Если хоть одна строка второго списка совпадает с любой строкой из первого, второй список удаляется.

Подскажите пожалуйста.
@Budda записал подробный видео ответ на Ваш вопрос. Надеюсь, будет полезно данное видео.
 
Последнее редактирование:
  • Спасибо
Реакции: moRL и Budda

Budda

Client
Регистрация
13.07.2015
Сообщения
247
Благодарностей
41
Баллы
28
@Budda записал подробный видео ответ на Ваш вопрос. Надеюсь, будет полезно данное видео.
Вау!) Спасибо большое, но я уже разобрался) Забыл опубликовать решение проблемы.

Сделал сравнение с помощью C#. Мне показалось это куда более простым вариантом.
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["listSearchTextContains"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Результаты"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
            return "yes";
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Подписался :ay:
 
  • Спасибо
Реакции: Fedman09 и Mr.Slim

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 361
Благодарностей
8 646
Баллы
113
Вау!) Спасибо большое, но я уже разобрался) Забыл опубликовать решение проблемы.

Сделал сравнение с помощью C#. Мне показалось это куда более простым вариантом.
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["listSearchTextContains"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Результаты"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
            return "yes";
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Подписался :ay:
возможно я не уловил самой сути, поэтому спрошу на всякий случай: чем не устраивает этот вариант http://zennolab.com/discussion/threads/primery-raboty-ehkshenov.6629/#post-144409
 
  • Спасибо
Реакции: C2H5OH

Budda

Client
Регистрация
13.07.2015
Сообщения
247
Благодарностей
41
Баллы
28
возможно я не уловил самой сути, поэтому спрошу на всякий случай: чем не устраивает этот вариант http://zennolab.com/discussion/threads/primery-raboty-ehkshenov.6629/#post-144409
Поиск идет в каждой строке списка. Происходит это гораздо быстрее. Вместо 10-ти экшенов, мы видим всего один код.
 
  • Спасибо
Реакции: C2H5OH

C2H5OH

Client
Регистрация
30.09.2014
Сообщения
55
Благодарностей
26
Баллы
18
возможно я не уловил самой сути, поэтому спрошу на всякий случай: чем не устраивает этот вариант http://zennolab.com/discussion/threads/primery-raboty-ehkshenov.6629/#post-144409
Тут просто кому как удобнее. Два разных пути, которые дают одинаковый итог. В зеннопостере можно получать один результат разными способами.
 
  • Спасибо
Реакции: Budda

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 361
Благодарностей
8 646
Баллы
113
Поиск идет в каждой строке списка. Происходит это гораздо быстрее. Вместо 10-ти экшенов, мы видим всего один код.
а зачем искать в каждой строке списка, если можно искать в содержимом всего списка сразу?
и не 10 экшенов - 3 (объединение списка в переменную, регекс, иф), безусловно что один экшен с кодом лучше, но тут код, который нужно еще найти где то и отстроить, вместо варианта - сляпал экшены в несколько кликов мыши и оно работает уже, и работает достаточно быстро..
 

Budda

Client
Регистрация
13.07.2015
Сообщения
247
Благодарностей
41
Баллы
28
а зачем искать в каждой строке списка, если можно искать в содержимом всего списка сразу?
и не 10 экшенов - 3 (объединение списка в переменную, регекс, иф), безусловно что один экшен с кодом лучше, но тут код, который нужно еще найти где то и отстроить, вместо варианта - сляпал экшены в несколько кликов мыши и оно работает уже, и работает достаточно быстро..
Не настроен спорить) Оба вариант хороши. Я выложил тот, который выбрал для себя.
 

yreha

Client
Регистрация
19.11.2015
Сообщения
125
Благодарностей
3
Баллы
18
Вариант с с# не работает с привязным к списку файлом. два часа сидел не мог понять в чем дело, все выдавал "yes"
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
Вариант с с# не работает с привязным к списку файлом. два часа сидел не мог понять в чем дело, все выдавал "yes"
Значит что-то не так делаете, должно работать.
 

yreha

Client
Регистрация
19.11.2015
Сообщения
125
Благодарностей
3
Баллы
18
может. не буду спорить. как только прикрепляю файл к списку результат один и тоже - совпадение. снял файл - заработал. автору конечно респект.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
может. не буду спорить. как только прикрепляю файл к списку результат один и тоже - совпадение. снял файл - заработал. автору конечно респект.
Нужен пример шаблона с проблемой.
 

Mutaborshik

Новичок
Регистрация
15.09.2017
Сообщения
1
Благодарностей
0
Баллы
1
Вау!) Спасибо большое, но я уже разобрался) Забыл опубликовать решение проблемы.

Сделал сравнение с помощью C#. Мне показалось это куда более простым вариантом.
Код:
// берем из переменной текст, который надо искать
var textContains = project.Variables["listSearchTextContains"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["Результаты"];
// ищем в каждой строчке в списке
lock(SyncObjects.ListSyncer)
{
    for(int i=0; i < sourceList.Count; i++)
    {
        // читаем строку из списка
        var str = sourceList[i];
        // проверяем содержание текста в строке, если есть совпадение возвращаем "yes"
        if (str.Contains(textContains))
            return "yes";
    }
}
// если ничего не нашли возвращаем "no"
return "no";
Подписался :ay:
Привет, как в этом коде дополнить, чтобы он искал слово целиком? Сейчас он ищет любое совпадение, например - например, целое слово ком, он найдет компьютер, компоновка, а нужно только ком.
 

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