Проверка данные из списка в цикле на с#

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
Добрый день. может быть кто то подскажет как решить данную задачу на c#

Есть переменная "А" в ней текст.
Есть список (name.txt) ~15к значений в списке в столбце. Данные в списке могут быть просто слова, а могут быть слова и цифры.

Что нужно?
Нужно взять значение из первой строки списка name.txt и положить в переменную "B" Далее проверить есть ли в переменной "А" переменная "B" (То есть если в тексте определенные слова)

Если в переменной "A" нет данных из переменной "B" - то взять следующую строку из списка name.txt и проверить еще пока не будет проверено последнее значение из списка.

Если в переменной "А" есть значение из переменной "B" вывести ответ в переменную "С"
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 424
Баллы
113

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
Логику я представляю, нужен код на c# т.к я не знаю c#
 

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
это все реализуемо на обычных зеновских кубиках. Если у вас нет понимания c# то и не делайте пока задачу на нем. Скорость обработки в ZP будет та же. строгое вхождение строки в строку можно через поиск по регулярке с ключами регистра сделать, хотя на C# все же проще одной строкой:
https://zennolab.com/discussion/threads/proverka-vxozhdenija-podstroki-v-stroku-kak.22568/
 

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
это все реализуемо на обычных зеновских кубиках. Если у вас нет понимания c# то и не делайте пока задачу на нем. Скорость обработки в ZP будет та же. строгое вхождение строки в строку можно через поиск по регулярке с ключами регистра сделать, хотя на C# все же проще одной строкой:
https://zennolab.com/discussion/threads/proverka-vxozhdenija-podstroki-v-stroku-kak.22568/
я знаю, что средствами ЗП можно реализовать данную задачу, мне нужно реализовать это на с#
В принципе мне хватит куска кода - который в цикле берет значения из списка с первой до последней (переменной в списке)
 

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
Нашел решение такое:
string num_str = Convert.ToString(project.Variables["номер строки в списке"].Value);
return project.Lists["название списка"].GetItem(num_str);

Так же есть еще такое решение, но мне нравится больше, НО я не знаю как записать переменную

project.Variables["Переменная куда положить"].Value = project.Variables["Переменная откуда взять"].Value.Split('\n')[номер строки в переменной в виде цифры];

Не знаю как внести переменную в данный код на место "номер строки в переменной в виде цифры"
Цикл +1 строку на шарпе можно сделать так, если я правильно понимаю

int a = int.Parse(project.Variables["Переменная к которой прибавляется +1"].Value);
return a + 1;
 
Последнее редактирование:

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Нашел решение такое:
string num_str = Convert.ToString(project.Variables["номер строки в списке"].Value);
return project.Lists["название списка"].GetItem(num_str);

Так же есть еще такое решение, но мне нравится больше, НО я не знаю как записать переменную

project.Variables["Переменная куда положить"].Value = project.Variables["Переменная откуда взять"].Value.Split('\n')[номер строки в переменной в виде цифры];

Не знаю как внести переменную в данный код на место "номер строки в переменной в виде цифры"
Цикл +1 строку на шарпе можно сделать так, если я правильно понимаю

int a = int.Parse(project.Variables["Переменная к которой прибавляется +1"].Value);
return a + 1;
Привет. Я новичок, но как раз разбираюсь с этой темой.
В последней строке цикла скорее всего:
Код:
"return a = a + 1;"
А по поводу вывода номера строки в виде цифры - если она у тебя есть в переменной проекта, то, скорее всего нужно обработать переменную

Код:
string x = project.Variables["переменная_проекта_с_цифрой"].Value;
int conv = Convert.ToInt32(x);
И тогда можно будет использовать её значение (conv) как цифру.
 

ZComand

Client
Регистрация
02.02.2016
Сообщения
57
Благодарностей
63
Баллы
18
Добрый день. может быть кто то подскажет как решить данную задачу на c#

Есть переменная "А" в ней текст.
Есть список (name.txt) ~15к значений в списке в столбце. Данные в списке могут быть просто слова, а могут быть слова и цифры.

Что нужно?
Нужно взять значение из первой строки списка name.txt и положить в переменную "B" Далее проверить есть ли в переменной "А" переменная "B" (То есть если в тексте определенные слова)

Если в переменной "A" нет данных из переменной "B" - то взять следующую строку из списка name.txt и проверить еще пока не будет проверено последнее значение из списка.

Если в переменной "А" есть значение из переменной "B" вывести ответ в переменную "С"
C#:
foreach(string item in project.Lists["твойСписокИзкоторогоБеремСтроки"])
            {
                //item - это твоя переменная Б
                if (project.Variables["ТвояПеременнаяА"].Value.Contains(item))//тут проверяем содержится ли Б в А с учетом регистра пример: Привет НЕ равно привет
                    //if (project.Variables["ТвояПеременнаяА"].Value.ToLower().Contains(item.ToLower()))//тут проверяем содержится ли Б в А без учета регистра пример: Привет равно привет
                    return item;//если Б есть в А тогда заканчиваем работу снипета и возвращаем Б
            }
            //ели вхождений не найдено тогда снипет вернет пусто
            return "";
Сделал так как понял задачу ))
 
  • Спасибо
Реакции: Home_KreKer

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
C#:
foreach(string item in project.Lists["твойСписокИзкоторогоБеремСтроки"])
            {
                //item - это твоя переменная Б
                if (project.Variables["ТвояПеременнаяА"].Value.Contains(item))//тут проверяем содержится ли Б в А с учетом регистра пример: Привет НЕ равно привет
                    //if (project.Variables["ТвояПеременнаяА"].Value.ToLower().Contains(item.ToLower()))//тут проверяем содержится ли Б в А без учета регистра пример: Привет равно привет
                    return item;//если Б есть в А тогда заканчиваем работу снипета и возвращаем Б
            }
            //ели вхождений не найдено тогда снипет вернет пусто
            return "";
Сделал так как понял задачу ))
Да, данный код решает задачу корректно и быстро, спасибо большое!
Есть вопрос про логику работы.
Из списка берутся строки в цикле и проверяются совпадения с переменной - первое удовлетворяющее совпадение - выводится в переменную, правильно я понимаю?
Если то что нашлось первым совпадением - не удовлетворяет, как продолжить поиск дальше по списку для поиска следующих совпадений?
 
Последнее редактирование:

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
Привет. Я новичок, но как раз разбираюсь с этой темой.
В последней строке цикла скорее всего:
Код:
"return a = a + 1;"
А по поводу вывода номера строки в виде цифры - если она у тебя есть в переменной проекта, то, скорее всего нужно обработать переменную

Код:
string x = project.Variables["переменная_проекта_с_цифрой"].Value;
int conv = Convert.ToInt32(x);
И тогда можно будет использовать её значение (conv) как цифру.
К сожалению не понял о чем вы написали...
Я так и не смог разобраться как в этом куске кода использовать переменную в место цифры.

project.Variables["Переменная куда положить"].Value = project.Variables["Переменная откуда взять"].Value.Split('\n')[как на это месте использовать переменную, а не цифру?];
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
C#:
var list = project.Lists["list"];
foreach(string item in project.Lists["твойСписокИзкоторогоБеремСтроки"])
    {
        //item - это твоя переменная Б
        if (project.Variables["ТвояПеременнаяА"].Value.Contains(item))//тут проверяем содержится ли Б в А с учетом регистра пример: Привет НЕ равно привет
            //if (project.Variables["ТвояПеременнаяА"].Value.ToLower().Contains(item.ToLower()))//тут проверяем содержится ли Б в А без учета регистра пример: Привет равно привет
            list.Add(item);//если Б есть в А тогда записываем Б в список
    }
Список уже обрабатываешь построчно.
 
  • Спасибо
Реакции: Gunjubasik и Home_KreKer

Home_KreKer

Client
Регистрация
05.12.2016
Сообщения
156
Благодарностей
37
Баллы
28
C#:
var list = project.Lists["list"];
foreach(string item in project.Lists["твойСписокИзкоторогоБеремСтроки"])
    {
        //item - это твоя переменная Б
        if (project.Variables["ТвояПеременнаяА"].Value.Contains(item))//тут проверяем содержится ли Б в А с учетом регистра пример: Привет НЕ равно привет
            //if (project.Variables["ТвояПеременнаяА"].Value.ToLower().Contains(item.ToLower()))//тут проверяем содержится ли Б в А без учета регистра пример: Привет равно привет
            list.Add(item);//если Б есть в А тогда записываем Б в список
    }
Список уже обрабатываешь построчно.
Спасибо, работает.
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 523
Благодарностей
1 321
Баллы
113
C#:
var list = project.Lists["list"];
foreach(string item in project.Lists["твойСписокИзкоторогоБеремСтроки"])
    {
        //item - это твоя переменная Б
        if (project.Variables["ТвояПеременнаяА"].Value.Contains(item))//тут проверяем содержится ли Б в А с учетом регистра пример: Привет НЕ равно привет
            //if (project.Variables["ТвояПеременнаяА"].Value.ToLower().Contains(item.ToLower()))//тут проверяем содержится ли Б в А без учета регистра пример: Привет равно привет
            list.Add(item);//если Б есть в А тогда записываем Б в список
    }
Список уже обрабатываешь построчно.
Подскажите, пожалуйста, как вместо имени list.Add(item); - вывести номер строки IndexOf ?
 

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