Операции над списком по средствам C# сниппета

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18

Meteorburn

Client
Регистрация
23.05.2016
Сообщения
1 446
Благодарностей
564
Баллы
113
Ребят, потребовалась ещё одна задача))

Есть список привязанный к файлу, нужно из него взять до первого совпадения по регулярному выражению текст с удалением, удалить переносы строк, заменить их на запятую с пробелом, записать в переменную.

В идеале ещё и записать взятые значения в конец этого же списка.

Вот код для замены переноса строк на "запятую".
  1. C#:
    var list = project.Lists["Список"]; // Исходный список
                Random rand = new Random();
                StringBuilder strb = new StringBuilder();
                    // j - количество строк, которое нужно взять.
                int j = int.Parse(project.Variables["Имя переменной"].Value);
                for (int i = 0; i < j; i++)
                {
                    int r = rand.Next(list.Count);
                    if (i + 1 == j)
                    {
                        strb.Append(list[r]);
                    }
                    else
                    {
                        strb.Append(list[r] + ","); // Разделитель
                    }
                    list.RemoveAt(r);
                }
                return strb.ToString();
Вероятнее всего это строку кода
// j - количество строк, которое нужно взять.
int j = int.Parse(project.Variables["Имя переменной"].Value);

заменить на выпаршивание по регулярке текста с удалением.
 
Последнее редактирование:

Gizmond

Client
Регистрация
18.02.2017
Сообщения
264
Благодарностей
51
Баллы
28
Код не работает если в списке осталось меньше чем нужно. Ну к примеру берем каждые раз по 5 строк а в списке их всего 6 , на 2 прогон выдает ошибку. Как сделать чтобы он загреб все остаточные данные из списка без ошибки ?
 

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Ребята привет!
В списке есть 2 строки. Прошу подсказать код C#, как взять строки из списка и положить их в переменные: picture_0 и picture_1 соответственно.
Благодарю!!
 

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Благодарностей
14
Баллы
18
Нашел такое решение. Берет первую строку с удалением:
C#:
lock(SyncObjects.ListSyncer){
   project.Variables["picture_0"].Value = project.Lists["picture"][0].Trim();
   project.Lists["picture"].RemoveAt(0);
}

lock(SyncObjects.ListSyncer){
   project.Variables["picture_1"].Value = project.Lists["picture"][0].Trim();
   project.Lists["picture"].RemoveAt(0);
}
 

Szerzs

Client
Регистрация
15.06.2019
Сообщения
253
Благодарностей
68
Баллы
28
C#:
var list = project.Lists["List"];
Random rnd = new Random();
int r = rnd.Next(list.Count);
project.Variables["Var"].Value = list[r];
А есть вариант взять рандомное количество строк (которое указано в переменной) и положить его в переменную? Спасибо.
 

ZComand

Client
Регистрация
02.02.2016
Сообщения
57
Благодарностей
63
Баллы
18
А есть вариант взять рандомное количество строк (которое указано в переменной) и положить его в переменную? Спасибо.
У зеновских списков есть встроенные методы для получения значений из него )). Почитай вики.
Решение твоей задачи такое:
C#:
string countItems = project.Variables["countItems"].Value;
project.Variables["myVariable"].Value = string.Join(Environment.NewLine, project.Lists["List"].GetItems("random" + countItems, true));
Чтобы понять каким образом указать первый параметр метода GetItems стоит изучить этот раздел зенновики
 
  • Спасибо
Реакции: Szerzs

Szerzs

Client
Регистрация
15.06.2019
Сообщения
253
Благодарностей
68
Баллы
28
У зеновских списков есть встроенные методы для получения значений из него )). Почитай вики.
Решение твоей задачи такое:
C#:
string countItems = project.Variables["countItems"].Value;
project.Variables["myVariable"].Value = string.Join(Environment.NewLine, project.Lists["List"].GetItems("random" + countItems, true));
Чтобы понять каким образом указать первый параметр метода GetItems стоит изучить этот раздел зенновики
Преогромное спасибо)
 

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