Получить нужную строку из списка, подскажите как!?

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
Привет комрады, покурил форум, ответа не нашел, ну кроме как получения значения из ячейки таблицы
http://zennolab.com/discussion/threads/poisk-po-jachejkam-v-tablice.35268/#post-262024

Моя задача наипростейшая по сути, но стандартных кубиков для её выполнения я не нашел, сишарп не юзаю, вообщем суть в чем, имеется переменная, например "Login" и по её началу нужно найти строку в списке, которая содержит эту переменную.

Список такой допустим..

Login1:pass@proxu
Login2:pass@proxu
Login3:pass@proxu

В проджек мейкер нет такой фичи, искать по элементу содержащему определенный текст..
Была мысль брать строки по порядку, и искать совпадение с переменной, перебирая каждую, но если в списке будет 100000 строк.. Пустая трата времени.

 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
А иначе, чем перебором Вы это и не сделаете. Делая кодом, Вы тоже будете это перебирать.
Как вариант (далеко не самый хороший) - удаляйте все строки из списка, которые не содержат Ваш текст и получайте оставшуюся строку. Изменения в файл не сохраняйте. Ничего более тупое придумать не смог тут )
 
  • Спасибо
Реакции: chazer24

cryogen

Client
Регистрация
24.12.2012
Сообщения
29
Благодарностей
15
Баллы
3
Привет комрады, покурил форум, ответа не нашел, ну кроме как получения значения из ячейки таблицы
http://zennolab.com/discussion/threads/poisk-po-jachejkam-v-tablice.35268/#post-262024

Моя задача наипростейшая по сути, но стандартных кубиков для её выполнения я не нашел, сишарп не юзаю, вообщем суть в чем, имеется переменная, например "Login" и по её началу нужно найти строку в списке, которая содержит эту переменную.

Список такой допустим..

Login1:pass@proxu
Login2:pass@proxu
Login3:pass@proxu

В проджек мейкер нет такой фичи, искать по элементу содержащему определенный текст..
Была мысль брать строки по порядку, и искать совпадение с переменной, перебирая каждую, но если в списке будет 100000 строк.. Пустая трата времени.

Ну все просто объедини список в переменную и через регулярку цыпляй нужную строку!!!
 
  • Спасибо
Реакции: chazer24

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
Ну все просто объедини список в переменную и через регулярку цыпляй нужную строку!!!
Не получается, регулярка не работает с переменной походу..
Смотри, мне нужно найти в списке строку Емаил:пасс, в переменной Логин у меня прописывается значение Емаил.
Я обьеденил все элементы, разделителем | и получил конструкцию Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс
Сенйчас мне нужно добыть нужный Емаил:пасс из этой конструкции, но регулярка не понимает что я от неё хочу))


 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 994
Благодарностей
787
Баллы
113
а чем плох перебор? - это в прожект мейкере долго будет, а в постере мигом...
 

cryogen

Client
Регистрация
24.12.2012
Сообщения
29
Благодарностей
15
Баллы
3
Не получается, регулярка не работает с переменной походу..
Смотри, мне нужно найти в списке строку Емаил:пасс, в переменной Логин у меня прописывается значение Емаил.
Я обьеденил все элементы, разделителем | и получил конструкцию Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс|Емаил:пасс
Сенйчас мне нужно добыть нужный Емаил:пасс из этой конструкции, но регулярка не понимает что я от неё хочу))


Ну в конструкторе рег.выражений переменная не работает, попробуйте воткнуть рег. выражение в обработку текста только слешь уберите внутри переменной, точно не помню работает там переменная или нет!!!
 
  • Спасибо
Реакции: chazer24

chazer24

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

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
C#:
IZennoList list = project.Lists["List"];
string text = project.Variables["Login"].Value;

for (int i = 0; i < list.Count; i++) {
    string str = list[i].Split(':')[0];
    if (str == text)
        return list[i];
}
throw new Exception("Строка с таким логином не найдена!");
 

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
C#:
IZennoList list = project.Lists["List"];
string text = project.Variables["Login"].Value;

for (int i = 0; i < list.Count; i++) {
    string str = list[i].Split(':')[0];
    if (str == text)
        return list[i];
}
throw new Exception("Строка с таким логином не найдена!");
Благодарю))
 

AloneSlamer

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

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

Нахер заморочки )
Клонируй список и удали все строки которые не содержат нужный текст.
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113
C#:
IZennoList list = project.Lists["List"];
string text = project.Variables["Login"].Value;

for (int i = 0; i < list.Count; i++) {
    string str = list[i].Split(':')[0];
    if (str == text)
        return list[i];
}
throw new Exception("Строка с таким логином не найдена!");
столько лишней болтовни а помог только Dimionix
 
  • Спасибо
Реакции: Dimionix

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
столько лишней болтовни а помог только Dimionix
Так это же перебор. Если бы ТС спросил, как перебором получить строку, я бы ему подсказал так же, но вопрос был - "Как уйти от перебора", вот и посыпались мега крутые костыли 8-)
 
  • Спасибо
Реакции: masterLomaster
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

Fantomics

Client
Регистрация
01.06.2016
Сообщения
68
Благодарностей
12
Баллы
8

Можно еще так
Возьмется строка даже хоть пол логина будет. Потом просто со второго списка добавить строку в переменную
 

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Регистрация
28.06.2016
Сообщения
308
Благодарностей
17
Баллы
18
У меня была похожая ситуация вчера.
Мне нужно-было при парсинге исключить дубли при повторном запуске зены (т.как все переменные и списки обнуляются) т.е мне нужно было найти нужную строку в файле. но от перебора я отказался.
Я сделал так: При парсинге записывал все ссылки в файл, далее при получении новой ссылки сверял ее с накопленным списком.

кубик "прочитать файл" (где лежит список в котором нужно искать)
- положить в переменную "1". - далее обработка текста "regex" (обработка переменной 1 ) , вместо регуляри ставил переменную "2" (ту ссылку которую нужно-было найти в файле, как и тебе строку) и ложить результат в переменную "3"
- Далее IF Сравнить "2"=="3"
если нужная строка находится то IF сробатывает и идет как "выполнено" если строка не нашлась то переменная "3" оказывается пустой и IF не срабатывает и уходит по пркрывистой.

Так и тебе можно таким способом искать нужную строку.
 
Последнее редактирование:

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
У меня была похожая ситуация вчера.
Мне нужно-было при парсинге исключить дубли при повторном запуске зены (т.как все переменные и списки обнуляются) т.е мне нужно было найти нужную строку в файле. но от перебора я отказался.
Я сделал так: При парсинге записывал все ссылки в файл, далее при получении новой ссылки сверял ее с накопленным списком.

кубик "прочитать файл" (где лежит список в котором нужно искать)
- положить в переменную "1". - далее обработка текста "regex" (обработка переменной 1 ) , вместо регуляри ставил переменную "2" (ту ссылку которую нужно-было найти в файле, как и тебе строку) и ложить результат в переменную "3"
- Далее IF Сравнить "2"=="3"
если нужная строка находится то IF сробатывает и идет как "выполнено" если строка не нашлась то переменная "3" оказывается пустой и IF не срабатывает и уходит по пркрывистой.

Так и тебе можно таким способом искать нужную строку.
Спасибо, уже решил)) глянь сообщение от Dimionix Минимум заморочек.
 

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
399
Благодарностей
92
Баллы
28
del
 
Последнее редактирование:

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