Поиск слова во всем списке

Nikolai132132

Client
Регистрация
23.10.2017
Сообщения
133
Благодарностей
2
Баллы
18
Привет всем! Подскажите, как можно реализовать поиск слова в списке с n-ым кол-вом строк? То есть я хочу такой кубик, который бы уходил в одно место, если во всех строках списка встречается "слово" и уходил в другое место, если есть хотя бы одна строка без этого "слова". Перебор всех строк и поиск в переменной, боюсь, не подойдет, так как работа идет в 10-15 потоков, а список привязан к файлу, что может привести к путанице в работе.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 462
Благодарностей
8 686
Баллы
113
Привет всем! Подскажите, как можно реализовать поиск слова в списке с n-ым кол-вом строк? То есть я хочу такой кубик, который бы уходил в одно место, если во всех строках списка встречается "слово" и уходил в другое место, если есть хотя бы одна строка без этого "слова". Перебор всех строк и поиск в переменной, боюсь, не подойдет, так как работа идет в 10-15 потоков, а список привязан к файлу, что может привести к путанице в работе.
Список объедините в переменную (Операции над списком), и проверяйте вхождение с помощью Обработка текста - Regex, предварительно применив к переменной, по которой будете производить поиск, экшен Обработка текста - Escape строки, чтобы сделать из нее регулярное выражение. А далее с помощью экшена IF проверяете на пустоту и разветвляете выполнение далее. В этом случае проверка будет без перебора строк.
 
Последнее редактирование:
  • Спасибо
Реакции: bizzon, Alexmd и doc

Nikolai132132

Client
Регистрация
23.10.2017
Сообщения
133
Благодарностей
2
Баллы
18
Список объедините в переменную (Операции над списком), и проверяйте вхождение с помощью Обработка текста - Regex, предварительно применив к переменной, по которой будете производить поиск, экшен Обработка текста - Escape строки, чтобы сделать из нее регулярное выражение. А далее с помощью экшена IF проверяете на пустоту и разветвляете выполнение далее. В этом случае проверка будет без перебора строк.
К сожалению не очень понял. У меня задача такая: в списке лежат логины. Иногда эти логины банятся, поэтому к логину в конце приписывается "!БАН". Мне необходимо в проекте, который работает в большое количество потоков, выводить в лог ошибку: "ВСЕ ЛОГИНЫ В БАНЕ". То есть надо проверить, что в каждой строке было "БАН" и только тогда выводить ошибку. Если я делаю по Вашей инструкции, я в итоге получаю переменную, в которой через ":" в перемешку указаны все логины и как проверить, есть ли в каждом элементе между ":" слово "БАН" не знаю :((
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 462
Благодарностей
8 686
Баллы
113
К сожалению не очень понял. У меня задача такая: в списке лежат логины. Иногда эти логины банятся, поэтому к логину в конце приписывается "!БАН". Мне необходимо в проекте, который работает в большое количество потоков, выводить в лог ошибку: "ВСЕ ЛОГИНЫ В БАНЕ". То есть надо проверить, что в каждой строке было "БАН" и только тогда выводить ошибку. Если я делаю по Вашей инструкции, я в итоге получаю переменную, в которой через ":" в перемешку указаны все логины и как проверить, есть ли в каждом элементе между ":" слово "БАН" не знаю :((
Если нужно именно без перебора строк, то можно таким образом:
- подсчитываем кол-во строк в списке
- объединяем список в переменную
- регуляркой берем из этой переменной слова (признаки бана) в другой список
- подсчитываем кол-во строк в этом другом списке
- с помощью IF сравниваем, если кол-ва строк в этих списках равно, то значит все акки побанены
 
Регистрация
20.12.2018
Сообщения
13
Благодарностей
1
Баллы
3
У меня аналогичная проблема. Нужно проверять наличие текста в списке. То есть если текст из этой переменной есть в этом списке тогда ... если такого текста нет тогда...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
Кубик операции над списком, получить строку, не содержит текст "_БАН" . если записей нет с _БАН получаем выход по красной, если хоть одна запись есть по зеленой.
 
Регистрация
20.12.2018
Сообщения
13
Благодарностей
1
Баллы
3
Кубик операции над списком, получить строку, не содержит текст "_БАН" . если записей нет с _БАН получаем выход по красной, если хоть одна запись есть по зеленой.
Мне не текст а переменную надо чекать, но как вариант попробую. Спасибо
 
Регистрация
20.12.2018
Сообщения
13
Благодарностей
1
Баллы
3
Да работает. Я сделал операция над списком, получить строку, содержит текст, текст у меня переменная и перекладывает в переменную "болванку" если удалось то... если не удалось то...
 
Регистрация
20.12.2018
Сообщения
13
Благодарностей
1
Баллы
3
Не не работает, помогите)))
 

ZComand

Client
Регистрация
02.02.2016
Сообщения
57
Благодарностей
63
Баллы
18
Привет. Такую задачку проще всего решить через свой код!
Сделай следующее:
1. В проект добавь кубик "Свой код" -> "C# код"
2. В него скопируй код ниже
C#:
string listName = "Список 1"; //Тут укажи имя сиска в котором делать проверку
string searchWord = "BAN";//Тут укажи что искать в каждой строке. Поиск зависит от регистра
if (project.Lists[listName].All(x => x.Contains(searchWord)))
{
    project.SendWarningToLog("Все аккаунты в бане! Количество: " + project.Lists[listName].Count, true);
    throw new Exception(); //Выход по красной ветке
}
else
    project.SendInfoToLog("Живых аккаунтов: " +
        project.Lists[listName].Where(x => !x.Contains(searchWord)).Count().ToString()
        , true);//выход по зеленой ветке
3. В первых 2 строчках этого кода тебе нужно будет указать название списка и слово которое искать в каждой строке.

Благодарности принимаю в виде клика по кнопке "СПАСИБО"! :-)
 

Podric

Client
Регистрация
16.08.2019
Сообщения
76
Благодарностей
6
Баллы
8
Привет. Такую задачку проще всего решить через свой код!
Сделай следующее:
1. В проект добавь кубик "Свой код" -> "C# код"
2. В него скопируй код ниже
C#:
string listName = "Список 1"; //Тут укажи имя сиска в котором делать проверку
string searchWord = "BAN";//Тут укажи что искать в каждой строке. Поиск зависит от регистра
if (project.Lists[listName].All(x => x.Contains(searchWord)))
{
    project.SendWarningToLog("Все аккаунты в бане! Количество: " + project.Lists[listName].Count, true);
    throw new Exception(); //Выход по красной ветке
}
else
    project.SendInfoToLog("Живых аккаунтов: " +
        project.Lists[listName].Where(x => !x.Contains(searchWord)).Count().ToString()
        , true);//выход по зеленой ветке
3. В первых 2 строчках этого кода тебе нужно будет указать название списка и слово которое искать в каждой строке.

Благодарности принимаю в виде клика по кнопке "СПАСИБО"! :-)
А как получить из списка строку "Вася спит" если в списке есть только "Вася спит (#2)" и зенопостер берет "Вася спит (#2)"
 

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