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

  • Автор темы Автор темы kagorec
  • Дата начала Дата начала

kagorec

Client
Регистрация
24.08.2013
Сообщения
1 152
Реакции
678
Баллы
113
Ну ничего особо крутого)

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

Берем одну строку, вторую, сравниваем.
Обязательно переменные заключать в кавычки.
Для сравнения чисел: строго без кавычек.
Подскажите пожалуйста более продуктивное решение задачи сравнивания чтоб не зависало на долго при сравнении например со списком когда в нем более 10.000 строк
Например сниппет для проверки по "белому списку"
 
Подскажите пожалуйста более продуктивное решение задачи сравнивания чтоб не зависало на долго при сравнении например со списком когда в нем более 10.000 строк
Например сниппет для проверки по "белому списку"
объединяешь список в переменную и проходишься нужным regex выражением по этой переменной.
 
  • Спасибо
Реакции: kagorec
Вроде все пересмотрел, но так и не понял.
Есть список сайтов. Я спарсил второй список. Их нужно сравнить. Если хоть одна строка второго списка совпадает с любой строкой из первого, второй список удаляется.

Подскажите пожалуйста.
@Budda записал подробный видео ответ на Ваш вопрос. Надеюсь, будет полезно данное видео.
 
Последнее редактирование:
  • Спасибо
Реакции: moRL и Budda
@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:
 
  • Спасибо
Реакции: UpDate0909 и Mr.Slim
Вау!) Спасибо большое, но я уже разобрался) Забыл опубликовать решение проблемы.

Сделал сравнение с помощью 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
возможно я не уловил самой сути, поэтому спрошу на всякий случай: чем не устраивает этот вариант http://zennolab.com/discussion/threads/primery-raboty-ehkshenov.6629/#post-144409
Поиск идет в каждой строке списка. Происходит это гораздо быстрее. Вместо 10-ти экшенов, мы видим всего один код.
 
  • Спасибо
Реакции: C2H5OH
возможно я не уловил самой сути, поэтому спрошу на всякий случай: чем не устраивает этот вариант http://zennolab.com/discussion/threads/primery-raboty-ehkshenov.6629/#post-144409
Тут просто кому как удобнее. Два разных пути, которые дают одинаковый итог. В зеннопостере можно получать один результат разными способами.
 
  • Спасибо
Реакции: Budda
Поиск идет в каждой строке списка. Происходит это гораздо быстрее. Вместо 10-ти экшенов, мы видим всего один код.
а зачем искать в каждой строке списка, если можно искать в содержимом всего списка сразу?
и не 10 экшенов - 3 (объединение списка в переменную, регекс, иф), безусловно что один экшен с кодом лучше, но тут код, который нужно еще найти где то и отстроить, вместо варианта - сляпал экшены в несколько кликов мыши и оно работает уже, и работает достаточно быстро..
 
а зачем искать в каждой строке списка, если можно искать в содержимом всего списка сразу?
и не 10 экшенов - 3 (объединение списка в переменную, регекс, иф), безусловно что один экшен с кодом лучше, но тут код, который нужно еще найти где то и отстроить, вместо варианта - сляпал экшены в несколько кликов мыши и оно работает уже, и работает достаточно быстро..
Не настроен спорить) Оба вариант хороши. Я выложил тот, который выбрал для себя.
 
Вариант с с# не работает с привязным к списку файлом. два часа сидел не мог понять в чем дело, все выдавал "yes"
 
Вариант с с# не работает с привязным к списку файлом. два часа сидел не мог понять в чем дело, все выдавал "yes"
Значит что-то не так делаете, должно работать.
 
может. не буду спорить. как только прикрепляю файл к списку результат один и тоже - совпадение. снял файл - заработал. автору конечно респект.
 
может. не буду спорить. как только прикрепляю файл к списку результат один и тоже - совпадение. снял файл - заработал. автору конечно респект.
Нужен пример шаблона с проблемой.
 
Вау!) Спасибо большое, но я уже разобрался) Забыл опубликовать решение проблемы.

Сделал сравнение с помощью 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:
Привет, как в этом коде дополнить, чтобы он искал слово целиком? Сейчас он ищет любое совпадение, например - например, целое слово ком, он найдет компьютер, компоновка, а нужно только ком.
 

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