Проверка наличия переменной в списке

Andron

Client
Joined
Apr 8, 2015
Messages
222
Reaction score
10
Points
18
Подскажите как сделать проверку наличия переменной в списке? Нашел скрипт, но там вроде нельзя указать переменную. Только конкретное значение.

  1. var url = project.Variables["url"].Value;
  2. var check = project.Lists["List"];
  3. return check.Contains(url);
 

VladZen

Administrator
Staff member
Joined
Nov 5, 2014
Messages
22,595
Reaction score
5,952
Points
113
Подскажите как сделать проверку наличия переменной в списке? Нашел скрипт, но там вроде нельзя указать переменную. Только конкретное значение.

  1. var url = project.Variables["url"].Value;
  2. var check = project.Lists["List"];
  3. return check.Contains(url);
Не понятно что вы делаете. Переменной не может быть в списке, туда могут только складываться ее значения.... Для чего вам нужна такая проверка?
 
Last edited:

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
return check.Contains("имя переменной");
 

Andron

Client
Joined
Apr 8, 2015
Messages
222
Reaction score
10
Points
18
Не понятно что вы делаете. Переменной не может быть в списке, туда могут только складываться ее значения.... Для чего вам нужна такая проверка?
Я делаю парсер текстов. Результат парсинга складывается в текстовый файл. Мне нужно проверить есть ли уже в этом списке данный текст, что бы не было дублей.
 

Andron

Client
Joined
Apr 8, 2015
Messages
222
Reaction score
10
Points
18
return check.Contains("имя переменной");
Можно поподробней? Это какой язык и как использовать?
 

LexxWork

Client
Joined
Oct 31, 2013
Messages
1,190
Reaction score
792
Points
113
язык греческий, использовать по назначению.
 

VladZen

Administrator
Staff member
Joined
Nov 5, 2014
Messages
22,595
Reaction score
5,952
Points
113
Я делаю парсер текстов. Результат парсинга складывается в текстовый файл. Мне нужно проверить есть ли уже в этом списке данный текст, что бы не было дублей.
Может проще очищать дубли после парсинга? - Операции со списком>Очистить дубли.
 
  • Thank you
Reactions: Andron

Andron

Client
Joined
Apr 8, 2015
Messages
222
Reaction score
10
Points
18
Может проще очищать дубли после парсинга? - Операции со списком>Очистить дубли.
Спасибо. Уже разобрался.
 

ZennoScript

Moderator
Joined
Mar 4, 2011
Messages
4,452
Reaction score
1,888
Points
113
Спасибо. Уже разобрался.
А искать вообще так:

var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
return list.IndexOf(check); // - вернёт номер строки, если она есть, или -1, если строки нет.
 

Zvizdunov

Client
Joined
Sep 9, 2016
Messages
21
Reaction score
7
Points
3
А искать вообще так:

var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
return list.IndexOf(check); // - вернёт номер строки, если она есть, или -1, если строки нет.
Этот вариант хорошо работает. Спасибо.

А как сделать, чтобы искало частичное вхождение строки?
Допустим у меня в строке, кроме переменной ещё есть дополнительная информация.
И нужно найти номер этой строки, такое возможно?
 

Zvizdunov

Client
Joined
Sep 9, 2016
Messages
21
Reaction score
7
Points
3
По прежнему актуально.
У кого-нибудь есть мысли как получить номер строки содержащей определенный текст?

Например:
Нужно найти "Яблоки зелёные*"

Список:
Яблоки, красные вкусные
Яблоки зелёные свежие 7р.
Яблоки отборные 10р.

Результат: строка "Яблоки зелёные свежие 7р." или её номер.
 

evgen_po

Client
Joined
Aug 27, 2013
Messages
848
Reaction score
532
Points
93
По прежнему актуально.
У кого-нибудь есть мысли как получить номер строки содержащей определенный текст?

Например:
Нужно найти "Яблоки зелёные*"

Список:
Яблоки, красные вкусные
Яблоки зелёные свежие 7р.
Яблоки отборные 10р.

Результат: строка "Яблоки зелёные свежие 7р." или её номер.
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
for (int i=0; i<list.Count; i++)
{
if (list.Contains(check))
{
return i;
}
}
return "нет такой строки";
 
Last edited:
  • Thank you
Reactions: blinkO_o

Zvizdunov

Client
Joined
Sep 9, 2016
Messages
21
Reaction score
7
Points
3
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
for (int i=0; i<list.Count; i++)
{
if (list.Contains(check))
{
return i;
}
}
return "нет такой строки";
К сожалению не получилось =(

При поиске части строки, возвращает "нет такой строки".
А когда ищу всю строку, то в любом случае возвращает 0.
 

evgen_po

Client
Joined
Aug 27, 2013
Messages
848
Reaction score
532
Points
93
К сожалению не получилось =(

При поиске части строки, возвращает "нет такой строки".
А когда ищу всю строку, то в любом случае возвращает 0.
Попробуйте так, почему то не весь код вставило в прошлый раз
Code:
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
for (int i=0; i<list.Count; i++)
{
if (list[i].Contains(check))
{
return i;
}
}
return "нет такой строки";
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
а список привязан к файлу ?
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Попробуйте так, почему то не весь код вставило в прошлый раз
Code:
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
for (int i=0; i<list.Count; i++)
{
if (list[i].Contains(check))
{
return i;
}
}
return "нет такой строки";
а что поправил ?? вроде два кода одинаковы
2017-03-07_230838.png
 

Zvizdunov

Client
Joined
Sep 9, 2016
Messages
21
Reaction score
7
Points
3
Попробуйте так, почему то не весь код вставило в прошлый раз
Code:
var check = project.Variables["имя переменной из проекта"].Value;
var list = project.Lists["Название списка, в котором ищем"];
for (int i=0; i<list.Count; i++)
{
if (list[i].Contains(check))
{
return i;
}
}
return "нет такой строки";
Спасибо огромное.
Так работает =)

Ты просто сделал мой день ;-)
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
код не правильно работает

2017-03-07_231711.png


если определять строку чтобы вывести то она третья, это для програмирования она на втором месте
 

evgen_po

Client
Joined
Aug 27, 2013
Messages
848
Reaction score
532
Points
93
а что поправил ?? вроде два кода одинаковы
View attachment 19004
нет, не одинаковые. Первый код как то рагульно вставился текстом. Потом я редактировал второй, может ты скопировал до редактирования.
Там ошибка в первом, из-за того что криво вставился - не хватает индекса для строки из списка, во втором она есть. Там где if
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
нет, не одинаковые. Первый код как то рагульно вставился текстом. Потом я редактировал второй, может ты скопировал до редактирования.
Там ошибка в первом, из-за того что криво вставился - не хватает индекса для строки из списка, во втором она есть. Там где if
я уже заметил поправку, просто я раньше скопировал чем ты изменил
 

evgen_po

Client
Joined
Aug 27, 2013
Messages
848
Reaction score
532
Points
93
код не правильно работает

View attachment 19005

если определять строку чтобы вывести то она третья, это для програмирования она на втором месте
ну кому нужно - пусть добавляет +1. А если он потом использует этот номер чтобы дальше взять эту строку по номеру, то как раз надо нормальный порядковый номер
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
ну кому нужно - пусть добавляет +1. А если он потом использует этот номер чтобы дальше взять эту строку по номеру, то как раз надо нормальный порядковый номер
тоже верно
 

Zvizdunov

Client
Joined
Sep 9, 2016
Messages
21
Reaction score
7
Points
3
код не правильно работает

View attachment 19005

если определять строку чтобы вывести то она третья, это для програмирования она на втором месте
Да, спасибо за наводку =)

Этот момент я сразу протестил и заметил.
В итоге следующим экшеном увеличил номер переменной со строкой на 1 .
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Да, спасибо за наводку =)

Этот момент я сразу протестил и заметил.
В итоге следующим экшеном увеличил номер переменной со строкой на 1 .
C#:
var check = project.Variables["response"].Value;

for (int i = 0; i<list.Count; i++)
{
    if (list[i].Contains(check))
    {
        return ++i;
    }
}

return "нет такой строки";
 

Vass

Client
Joined
Feb 3, 2014
Messages
79
Reaction score
10
Points
8
А кто может подсказать по обратной задачи? есть список слов и есть перемененная нужно проверить содержит ли переменая слово из списка?
т.е список
яблоки
груша
Переменная
груша это фрукт - вернутся да
Груша и яблоки это полезно - вернется да
Яблоки это фрукты - вернется нет
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
А кто может подсказать по обратной задачи? есть список слов и есть перемененная нужно проверить содержит ли переменая слово из списка?
т.е список
яблоки
груша
Переменная
груша это фрукт - вернутся да
Груша и яблоки это полезно - вернется да
Яблоки это фрукты - вернется нет
а почему обратная задача ?
чем это не подходит ?
замени просто некоторые строки, при нахождении напиши да, если не нашёл то нет

P.S. только обратил внимание, а что свежей ветку не нашёл ?
 

Vass

Client
Joined
Feb 3, 2014
Messages
79
Reaction score
10
Points
8

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,375
Reaction score
2,042
Points
113
Если брать скрипт из примера выше то не работает (потому что выше ищет переменную в списке), нашел ответ тут
http://zennolab.com/discussion/threads/kak-proverit-nalichie-opredelennogo-teksta-v-stroke-iz-spiska.13923/
))) местами сравнение заменить не судьба

всего то делов чтобы не просить лишний раз мелочь какую то
сам вопрос говорит что задача в обратном порядке

C#:
var check = project.Variables["response"].Value;
for (int i = 0; i < list.Count; i++)
{
    if (check.Contains(list[i]))
    {
        return "да";
    }
}
return "нет";
 
Last edited:
  • Thank you
Reactions: stanar

Vass

Client
Joined
Feb 3, 2014
Messages
79
Reaction score
10
Points
8
))) местами сравнение заменить не судьба
И как будет выглидить? я думал об этом но не смог сообразить как. Тестирую скрипт то что нашел что то не очень работает.
 

Vass

Client
Joined
Feb 3, 2014
Messages
79
Reaction score
10
Points
8
Твой
var list = project.Lists["Текст тем"];

var check = project.Variables["Variable13"].Value;
for (int i = 0; i < list.Count; i++)
{
if (check.Contains(list))
{
return "да";
}
}
return "нет";

Лучше работает.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)