Zennoposter: как проверить наличие строки в списке

Довольно часто мы собираем в список нужные данные. Это могут быть ссылки, данные о пользователях сайта, названия товаров и т.д. И практически всегда встает задача избавиться от дубликатов (т.е. не вносить в список строку, которая уже в нем есть). Стандартными средствами Zennoposter это реализовать невозможно. Поэтому ниже представлен коротенький фрагмент c# кода для реализации этой задачи

// берем из переменной текст, который надо искать
var textContains = project.Variables["listSearchTextContains"].Value;
// получаем список, в котором будем искать
var sourceList = project.Lists["SourceList"];
// ищем в каждой строчке в списке
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";

 

Несколько пояснений для тех, кто только начинает работать с Zennoposter из кода.
Обращение к переменной Zennoposter обычно производится через конструкцию {-Variable.name-}. Однако чтобы получить или записать значение в эту переменную в c# коде, используется следующая конструкция: project.Variables[«name»].Value;

В приведенном выше коде мы взяли значение из переменной проекта и записали в нашу локальную переменную var textContains.
Далее в цикле проверяется каждая строчка списка на совпадение со строкой из переменной. Для этого используется полезный метод строки Contains(), который возвращает true, если указанный аргумент совпадает с строкой и false — в противном случае.

Когда в c# используется оператор return, то программный код прекращается и результат помещается в переменную, которая указывается под строкой «Положить результат в переменную».

 1439756090_return

 

 

Смотрите также

Zennoposter. Как конвертировать файл из одной кодировки в другую При работе с текстовыми файлами в кодировке, отличной от utf8 в переменные помещаются "крякозябры". Например, при чтении файла в кодировке iso-8859-1....
  • Андрій Вітковський

    чому при порівняні return постійно «no»

    • https://seodima.com/ Dmitry

      Андрей, я очень часто использую этот блок и эту запись тут сделал скорее даже для себя, чтобы не искать 🙂
      Так что — работает точно правильно. Скиньте свой кусочек проекта — я Вам помогу 🙂

      • Андрій Вітковський

        кусок неполучеться скинути там щоб виділти цей кусок де провіряє тре пів проекту копіювати

        • https://seodima.com/ Dmitry
          • Андрій Вітковський

            та все так само
            і непойму чог неполучається

          • https://seodima.com/ Dmitry

            Может у Вас где-то проскакивает какой-то пробел? Или перевод строки?

          • Андрій Вітковський

            а перевод строки то що ви маєте наувазі?

          • https://seodima.com/ Dmitry

            Я имею ввиду, что может в списке у Вас строка «чистая», а со страницы Вы берёте ссылку и там берёте с каким-то спец символом, который не видно.
            Скопируйте в текстовый редактор с включённым отображением обе строки — эталонную и ту, которую проверяете. 🙂

          • Андрій Вітковський

            та вроді нічого нема
            https://www.google.com/chrome/browser/desktop/index.html?brand=CHBH&gclid=CLiggr6_5dACFQO2GAodDKIKGw
            ось силка можете самі глянути

          • https://seodima.com/ Dmitry

            у меня открывается ссылка на скачивание хрома 🙂

          • Андрій Вітковський

            це реклама на ютубі

          • https://seodima.com/ Dmitry

            Андрей, скопируйте кусок проекта, который берёт ссылку и сравнивает и кусочек эталонного списка. Я гляну.

          • Андрій Вітковський

            скайп є

          • https://seodima.com/ Dmitry

            да 🙂 very-dima или по почте ver.dima@gmail.com

          • Андрій Вітковський

            ви дивилися на шаблон що я вам скинув?

          • https://seodima.com/ Dmitry

            А куда Вы скинули?

          • Андрій Вітковський

            може знаєте якись інакший спосіб?

          • Андрій Вітковський

            в мне сють втім щоб порінювало силки
            якщо силка зі списка сопала з перемтоной то неберем такої силки

  • VasilGyk

    Гениально, мучался 2 дня, а тут все в одном коде
    Спасибо большое

  • Alexander Romanenko

    Думаю не совсем корректно. Contains показывает содержится ли кусок или нет — он не проверяет полное соответствие. То есть если у меня есть товар КАКАЯТОБОЛЬШАЯШТУКА и мне приходит товар БОЛЬШАЯШТУКА — ваш код выдаст, что он уже есть в списке и не добавит его.
    Без c# можно также проверять в зенке. Заносите весь список в котором проверяете в переменную и потом эту переменную кидаете в кубик Обработка текста. выбираете поиск или регексп, по вкусу и свой кусок текста пишете, который ищете. Если переменная на выходе пуста, значит нет такого текста в списке.