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

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
Подскажите как сделать проверку наличия переменной в списке? Нашел скрипт, но там вроде нельзя указать переменную. Только конкретное значение.

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

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 446
Благодарностей
5 905
Баллы
113
Подскажите как сделать проверку наличия переменной в списке? Нашел скрипт, но там вроде нельзя указать переменную. Только конкретное значение.

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

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
790
Баллы
113
return check.Contains("имя переменной");
 

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18
Не понятно что вы делаете. Переменной не может быть в списке, туда могут только складываться ее значения.... Для чего вам нужна такая проверка?
Я делаю парсер текстов. Результат парсинга складывается в текстовый файл. Мне нужно проверить есть ли уже в этом списке данный текст, что бы не было дублей.
 

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
790
Баллы
113
язык греческий, использовать по назначению.
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 446
Благодарностей
5 905
Баллы
113
Я делаю парсер текстов. Результат парсинга складывается в текстовый файл. Мне нужно проверить есть ли уже в этом списке данный текст, что бы не было дублей.
Может проще очищать дубли после парсинга? - Операции со списком>Очистить дубли.
 
  • Спасибо
Реакции: Andron

Andron

Client
Регистрация
08.04.2015
Сообщения
222
Благодарностей
10
Баллы
18

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 885
Баллы
113
Спасибо. Уже разобрался.
А искать вообще так:

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

Zvizdunov

Client
Регистрация
09.09.2016
Сообщения
21
Благодарностей
7
Баллы
3
А искать вообще так:

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

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

Zvizdunov

Client
Регистрация
09.09.2016
Сообщения
21
Благодарностей
7
Баллы
3
По прежнему актуально.
У кого-нибудь есть мысли как получить номер строки содержащей определенный текст?

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

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

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

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
531
Баллы
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 "нет такой строки";
 
Последнее редактирование:
  • Спасибо
Реакции: blinkO_o

Zvizdunov

Client
Регистрация
09.09.2016
Сообщения
21
Благодарностей
7
Баллы
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
Регистрация
27.08.2013
Сообщения
848
Благодарностей
531
Баллы
93
К сожалению не получилось =(

При поиске части строки, возвращает "нет такой строки".
А когда ищу всю строку, то в любом случае возвращает 0.
Попробуйте так, почему то не весь код вставило в прошлый раз
Код:
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 "нет такой строки";
 
  • Спасибо
Реакции: Alexander I и Zvizdunov

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а список привязан к файлу ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Попробуйте так, почему то не весь код вставило в прошлый раз
Код:
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
Регистрация
09.09.2016
Сообщения
21
Благодарностей
7
Баллы
3
Попробуйте так, почему то не весь код вставило в прошлый раз
Код:
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
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
код не правильно работает

2017-03-07_231711.png


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

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
531
Баллы
93
а что поправил ?? вроде два кода одинаковы
Посмотреть вложение 19004
нет, не одинаковые. Первый код как то рагульно вставился текстом. Потом я редактировал второй, может ты скопировал до редактирования.
Там ошибка в первом, из-за того что криво вставился - не хватает индекса для строки из списка, во втором она есть. Там где if
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
нет, не одинаковые. Первый код как то рагульно вставился текстом. Потом я редактировал второй, может ты скопировал до редактирования.
Там ошибка в первом, из-за того что криво вставился - не хватает индекса для строки из списка, во втором она есть. Там где if
я уже заметил поправку, просто я раньше скопировал чем ты изменил
 

evgen_po

Client
Регистрация
27.08.2013
Сообщения
848
Благодарностей
531
Баллы
93
код не правильно работает

Посмотреть вложение 19005

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
ну кому нужно - пусть добавляет +1. А если он потом использует этот номер чтобы дальше взять эту строку по номеру, то как раз надо нормальный порядковый номер
тоже верно
 

Zvizdunov

Client
Регистрация
09.09.2016
Сообщения
21
Благодарностей
7
Баллы
3
код не правильно работает

Посмотреть вложение 19005

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

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
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 "нет такой строки";
 
  • Спасибо
Реакции: luk911 и Zvizdunov

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
8
А кто может подсказать по обратной задачи? есть список слов и есть перемененная нужно проверить содержит ли переменая слово из списка?
т.е список
яблоки
груша
Переменная
груша это фрукт - вернутся да
Груша и яблоки это полезно - вернется да
Яблоки это фрукты - вернется нет
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
А кто может подсказать по обратной задачи? есть список слов и есть перемененная нужно проверить содержит ли переменая слово из списка?
т.е список
яблоки
груша
Переменная
груша это фрукт - вернутся да
Груша и яблоки это полезно - вернется да
Яблоки это фрукты - вернется нет
а почему обратная задача ?
чем это не подходит ?
замени просто некоторые строки, при нахождении напиши да, если не нашёл то нет

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

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
8

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
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 "нет";
 
Последнее редактирование:
  • Спасибо
Реакции: stanar

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
8
))) местами сравнение заменить не судьба
И как будет выглидить? я думал об этом но не смог сообразить как. Тестирую скрипт то что нашел что то не очень работает.
 

Vass

Client
Регистрация
03.02.2014
Сообщения
79
Благодарностей
10
Баллы
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 "нет";

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

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