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

  • Автор темы Автор темы Dimionix
  • Дата начала Дата начала
Ребят, потребовалась ещё одна задача))

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

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

Вот код для замены переноса строк на "запятую".
  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);

заменить на выпаршивание по регулярке текста с удалением.
 
Последнее редактирование:
Код не работает если в списке осталось меньше чем нужно. Ну к примеру берем каждые раз по 5 строк а в списке их всего 6 , на 2 прогон выдает ошибку. Как сделать чтобы он загреб все остаточные данные из списка без ошибки ?
 
Ребята привет!
В списке есть 2 строки. Прошу подсказать код C#, как взять строки из списка и положить их в переменные: picture_0 и picture_1 соответственно.
Благодарю!!
 
Нашел такое решение. Берет первую строку с удалением:
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);
}
 
C#:
Развернуть Свернуть Копировать
var list = project.Lists["List"];
Random rnd = new Random();
int r = rnd.Next(list.Count);
project.Variables["Var"].Value = list[r];

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

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

Чтобы понять каким образом указать первый параметр метода GetItems стоит изучить этот раздел зенновики

Преогромное спасибо)
 

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