Цикл c# для работы со списком

molotoff777

Client
Регистрация
26.03.2020
Сообщения
8
Благодарностей
4
Баллы
3
Здравствуйте!

Прошу помочь с кодом. Сначала с помощи регулярки вытаскиваю все в список, затем получаю строку и обрабатываю ее. Как можно все это затолкать в цикл, чтобы выполнялось до тех пор, пока не закончатся строки в списке?

C#:
project.Lists["Regex"].AddRange(regexGroups.Select(g => g.FirstOrDefault())); // добавляем найденный макросы в список

        var random = project.Lists["Regex"][0].Trim(); // получаем строку с макросом

        project.Lists["Regex"].RemoveAt(0); // удаляем ее из списка

        var errorIfEmptySettings = true;

        var regexSettings = Macros.TextProcessing.Regex(random, @"(?<=,).*?(?=,)", "0,1,2"); // вытаскиваем параметры макроса

        if (regexSettings.Count == 0)

            {

            if (errorIfEmptySettings) throw new Exception(); // выход по ошибке (если не верно составлен макрос)

            }

            else

            {

            string number = regexSettings[0].FirstOrDefault(); // получаем количество символов для строки

            string[] input = number.Split('-');

            int numberOfSymbol = Global.Classes.rnd.Next(int.Parse(input[0]), int.Parse(input[1]));

            string settings = regexSettings[1].FirstOrDefault(); // получаем параметры строки

            string set = regexSettings[2].FirstOrDefault(); // получаем специальные символы для строки

            var randomNew = Macros.TextProcessing.RandomText(numberOfSymbol, settings, set); // создаем рандомную строку по параметрам

            headers = Macros.TextProcessing.Replace(headers, random, randomNew, "Text", "First"); // заменяем ее в тексте

            }
 
Последнее редактирование:

molotoff777

Client
Регистрация
26.03.2020
Сообщения
8
Благодарностей
4
Баллы
3
Разобрался самостоятельно, может кому-то поможет, кто только осваивает csharp

C#:
project.Lists["Regex"].AddRange(regexGroups.Select(g => g.FirstOrDefault())); // добавляем найденный макросы в список

        for (int i = Convert.ToInt32(project.Lists["Regex"].Count.ToString()); i > 0; i--) // получаем количество строк в списке и задаем параметры выполнения цикла

        {

        var random = project.Lists["Regex"][0].Trim(); // получаем строку с макросом

        project.Lists["Regex"].RemoveAt(0); // удаляем ее из списка

        var errorIfEmptySettings = true;

        var regexSettings = Macros.TextProcessing.Regex(random, @"(?<=,).*?(?=,)", "0,1,2"); // вытаскиваем параметры макроса

        string number = regexSettings[0].FirstOrDefault(); // получаем количество символов для строки

        string[] input = number.Split('-');

        int numberOfSymbol = Global.Classes.rnd.Next(int.Parse(input[0]), int.Parse(input[1]));

        string settings = regexSettings[1].FirstOrDefault(); // получаем параметры строки

        string set = regexSettings[2].FirstOrDefault(); // получаем специальные символы для строки

        var randomNew = Macros.TextProcessing.RandomText(numberOfSymbol, settings, set); // создаем рандомную строку по параметрам

        headers = Macros.TextProcessing.Replace(headers, random, randomNew, "Text", "First"); // заменяем ее в тексте

        }
Добавил такую вот строку с параметрами for (int i = Convert.ToInt32(project.Lists["Regex"].Count.ToString()); i > 0; i--)
Convert.ToInt32(project.Lists["Regex"].Count.ToString() - получаем количество строк в списке
i > 0 - условие, которое гласит, что количество строк должно быть больше 0
i-- - уменьшаем счетчик с каждым выполнением цикла

В общем, задаем параметры как на примере и заключаем код, который хотим зациклить в {}
 
Последнее редактирование:
  • Спасибо
Реакции: doc и vadim4ukr

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 941
Благодарностей
4 333
Баллы
113
for (int i = Convert.ToInt32(project.Lists["Regex"].Count.ToString()); i > 0; i--) // получаем количество строк в списке и задаем параметры выполнения цикла
Красиво)) Наверняка "поможет, кто только осваивает csharp "
 

Mikhail B.

Moderator
Регистрация
23.12.2014
Сообщения
14 319
Благодарностей
5 424
Баллы
113
@molotoff777 для C# есть специальный блок

[CODE=csharp][ /CODE]
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
а почему так не получилось?

C#:
var Regex = project.Lists["Regex"];
....
for (int i=Regex.Count; i>0; i--)
 
Последнее редактирование:

molotoff777

Client
Регистрация
26.03.2020
Сообщения
8
Благодарностей
4
Баллы
3
а почему так не получилось?

C#:
for (int i = Regex.Count; i > 0; i--)
Я пробовал обычным методом получать количество строк, но почему-то PM ругался, что нельзя преобразовать количество строк в переменную типа int. Скорее всего ошибаюсь, но, по крайней мере, в описанном методе работает все ок.
 

zenno.xxx

Client
Регистрация
05.10.2016
Сообщения
262
Благодарностей
248
Баллы
43
попробуйте все-таки, как я написал - проблем возникнуть не должно.
скорее всего берется переменная из окружения ZP, а они там всегда строковые?*

C#:
var Regex = project.Lists["Regex"];
....
for (int i=Regex.Count; i>0; i--)
 
Последнее редактирование:
  • Спасибо
Реакции: molotoff777

molotoff777

Client
Регистрация
26.03.2020
Сообщения
8
Благодарностей
4
Баллы
3
попробуйте все-таки, как я написал - проблем возникнуть не должно.
скорее всего берется переменная из окружения ZP, а они там всегда строковые.

C#:
var Regex = project.Lists["Regex"];
....
for (int i=Regex.Count; i>0; i--)
В одну строчку объединил по вашему методу

C#:
for (int i = (project.Lists["Regex"]).Count; i > 0; i--) // получаем количество строк в списке и задаем параметры выполнения цикла
 
  • Спасибо
Реакции: sahha и zenno.xxx

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