Есть ли слово в списке? Как узнать..

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
Друзья, подскажите.. Как выполняется поиск текста из txt файлика? Есть вообщем блек лист, нужно что бы зенно проверяла, есть ли моя переменная в этом блек листе.. Найти не могу через какой кубик это парсится..
 

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Код:
// берем из переменной текст, который надо искать
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";
http://seodima.com/zennoposter-kak-proverit-nalichie-stroki-v-spiske/
 
  • Спасибо
Реакции: Hannes и chazer24

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Так в разы быстрее:
C#:
var list = project.Lists["Blacklist"];
string text = project.Variables["ПЕРЕМЕННАЯ С ТЕКСТОМ КОТОРЫЙ ИЩЕМ"].Value;
if (list.Contains(text)) {
   return "Найдено в блеклисте";
}
 
  • Спасибо
Реакции: Hannes, Deisler и chazer24

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
Спасибо ребят, выручили как всегда)
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Через Обработка текста>Regex можно пропарсить текст, а текст из файла взять экшном работы с файлами - http://zennolab.com/wiki/ru:actions:files
Так гораздо проще. Не знаю почему все любят советовать код, в котором новички не разбираются.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Через Обработка текста>Regex можно пропарсить текст, а текст из файла взять экшном работы с файлами - http://zennolab.com/wiki/ru:actions:files
Так гораздо проще. Не знаю почему все любят советовать код, в котором новички не разбираются.
Если текст в котором мы ищем - это несколько десятков или сотни тысяч строк, такая регулярка будет гораздо дольше обрабатываться, нежели выше приведенный код.
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Через Обработка текста>Regex можно пропарсить текст, а текст из файла взять экшном работы с файлами - http://zennolab.com/wiki/ru:actions:files
Так гораздо проще. Не знаю почему все любят советовать код, в котором новички не разбираются.
Не разу не соглашусь, что так проще. Гораздо проще и быстрее - копипаст кода и понимать его не обязательно, да и не нужно это большинству. К тому же у кода много плюсов по сравнению с кучей кубиков.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Не разу не соглашусь, что так проще. Гораздо проще и быстрее - копипаст кода и понимать его не обязательно, да и не нужно это большинству.
Да, и так пользователи привыкают к сниппетам, и не учатся самостоятельно пользоваться программой.
Если текст в котором мы ищем - это несколько десятков или сотни тысяч строк, такая регулярка будет гораздо дольше обрабатываться, нежели выше приведенный код.
Удивлен) При выполнении в зеннопостере регулярка парсит в лет.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Да, и так пользователи привыкают к сниппетам, и не учатся самостоятельно пользоваться программой.
Ну таких малая часть, основная масса, в принципе, не учиться/не собирается учиться пользоваться ProjectMaker'ом, проще заказать проект или скопировать что-то с форума. К счастью, в большинстве случаев, на форуме всё уже есть. А вот научиться пользоваться "Поиском" не помешало бы многим.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Удивлен) При выполнении в зеннопостере регулярка парсит в лет.
Не поленился, провел эксперимент.
Поиск осуществлялся в 749 634 строках, в котором искомое слово было всего в одном экземпляре.

Через C# код это заняло: 0.0720217 секунд.
Через Обработку текста (Regex): 0.8330546 секунд.
Разница: 0.7610329 секунд. И это всего 1 итерация, при этом задача не самая сложная.

А теперь представим, что таких итераций 1000.
При обработке текста регулярным выражением мы потеряем 761.0329 секунд ~ 12.6 минут.

Достаточно показательный пример? :-)
 
  • Спасибо
Реакции: Juniorcpa и Alexander I

AloneSlamer

Client
Регистрация
29.01.2013
Сообщения
1 404
Благодарностей
362
Баллы
83

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с AloneSlamer какие-либо сделки.

Не поленился, провел эксперимент.
Поиск осуществлялся в 749 634 строках, в котором искомое слово было всего в одном экземпляре.

Через C# код это заняло: 0.0720217 секунд.
Через Обработку текста (Regex): 0.8330546 секунд.
Разница: 0.7610329 секунд. И это всего 1 итерация, при этом задача не самая сложная.

А теперь представим, что таких итераций 1000.
При обработке текста регулярным выражением мы потеряем 761.0329 секунд ~ 12.6 минут.

Достаточно показательный пример? :-)
А добавь к этому список в 30 метров.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 100
Баллы
113
Не поленился, провел эксперимент.
В PM или в ZP?
Хотя, и так понятно, что поиск по регулярному выражению - не самый скоростной метод и если есть возможность избавиться от использования регулярок, то это очень хорошо.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
да - по зелёной
нет - по красной

C#:
return project.Lists["SourceList"].First(s=>s.Contains(project.Variables["Url"].Value));
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 233
Благодарностей
5 846
Баллы
113
Вот спорят....)
Код - это дополнительный функционал программы для продвинутых пользователей, а не основной функционал программы.
 

CmauJluk

Client
Регистрация
25.12.2017
Сообщения
287
Благодарностей
60
Баллы
28
C#:
return project.Lists["SourceList"].First(s=>s.Contains(project.Variables["Url"].Value));
Апну тему )

Поиск в списке идет по одному слову из переменной, каким образом можно сделать проверку по списку если в переменной несколько слов?
По очереди не очень хочется это делать, хотелось бы махом ))
 

Mikhail B.

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

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 458
Благодарностей
8 683
Баллы
113
По очереди не очень хочется это делать, хотелось бы махом ))
Если хочется махом, то можно объединить содержимое списка и искать в этом общем массиве данных.
 

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