Разделить значение в переменной, и положить в разные переменные, нужно на C#

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113
Всем привет, помогите пожалуйста со снипетом который разделял бы значение одной переменной, и ложил в разные переменные

например: имеем переменную Result со значением

site.ru|site1.ru|site2.ru|site3.ru|site4.ru|site5.ru|site6.ru|site7.ru|site8.ru|site9.ru|site10.ru|

имеем 10 переменных:
site1
site2
site3
site4
site5
site6
site7
site8
site9
site10

Задача: разделить значение переменной Result и положить их в заранее созданые 10 переменных.

На форуме нашел 2 снипета:

Первый
C#:
project.Variables["site1"].Value = project.Variables["Result"].Value.Split('|')[0];
project.Variables["site2"].Value = project.Variables["Result"].Value.Split('|')[1];
project.Variables["site3"].Value = project.Variables["Result"].Value.Split('|')[2];
project.Variables["site4"].Value = project.Variables["Result"].Value.Split('|')[3];
project.Variables["site5"].Value = project.Variables["Result"].Value.Split('|')[4];
project.Variables["site6"].Value = project.Variables["Result"].Value.Split('|')[5];
project.Variables["site7"].Value = project.Variables["Result"].Value.Split('|')[6];
project.Variables["site8"].Value = project.Variables["Result"].Value.Split('|')[7];
project.Variables["site9"].Value = project.Variables["Result"].Value.Split('|')[8];
project.Variables["site10"].Value = project.Variables["Result"].Value.Split('|')[9];
Второй
C#:
string text = project.Variables["Result"].Value;
string[] array = text.Split(new[] {"|"}, StringSplitOptions.None);
if (array [0]!= String.Empty) project.Variables["site1"].Value = array [0];
if (array [1]!= String.Empty) project.Variables["site2"].Value = array [1];
if (array [2]!= String.Empty) project.Variables["site3"].Value = array [2];
if (array [3]!= String.Empty) project.Variables["site4"].Value = array [3];
if (array [4]!= String.Empty) project.Variables["site5"].Value = array [4];
if (array [5]!= String.Empty) project.Variables["site6"].Value = array [5];
if (array [6]!= String.Empty) project.Variables["site7"].Value = array [6];
if (array [7]!= String.Empty) project.Variables["site8"].Value = array [7];
if (array [8]!= String.Empty) project.Variables["site9"].Value = array [8];
if (array [9]!= String.Empty) project.Variables["site10"].Value = array [9];
Они оба отлично работают в Project Maker-e, а вот в Zenno Poster выдает ошибку:
09:51:08 Выполнение действия CSharp OwnCode Индекс находился вне границ массива.

Версия Zenno Poster - 5.10.6.0
 
Последнее редактирование:
  • Спасибо
Реакции: Gunjubasik

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
если выдаёт такое - значит массив меньше, чем 10 элементов
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113
если выдаёт такое - значит массив меньше, чем 10 элементов
как? если в ПМ отрабатывает нормально, все переменные заполняет, все отлично. Получаеться что баг в самой зенке?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
как? если в ПМ отрабатывает нормально, все переменные заполняет, все отлично. Получаеться что баг в самой зенке?
не факт. для начала, по бэд энду, сохрани значение той переменной, в которой эти сайты прописаны. И потом сам увидишь в чём проблема
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
как? если в ПМ отрабатывает нормально, все переменные заполняет, все отлично. Получаеться что баг в самой зенке?
Попробуйте в зенно получить количество элементов:

C#:
string text = project.Variables["Result"].Value;
string[] array = text.Split(new[] {"|"}, StringSplitOptions.None);
return array.Count();
 
  • Спасибо
Реакции: kagorec

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
у меня уже давно по бэдэнду идёт сохранение переменных, скрин страницы, дом страницы. Идею взял вроде из статей. Отлично помогает в отладке
 
  • Спасибо
Реакции: zortexx

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
31 потому что в конце стоит разделитель
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113
у меня уже давно по бэдэнду идёт сохранение переменных, скрин страницы, дом страницы. Идею взял вроде из статей. Отлично помогает в отладке
а толку если я скопировал id ошибки, в проджекте меня перекидывает на этот снипет, вот мне и интересно что в нем не так? в проджекте отрабатывает а в зено ошибка, если не трудно воспроизведи ситуацию в своем зенно интересно у тебя так же будет или отработает нормально?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
вот именно. Когда трудно воспроизвести ты просто можешь по логу понять что к чему. Посмотреть, что в переменной исходной. Посмотреть, какие выходные переменные успели заполниться и чем
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
я уже его меняю на пустоту но всеровно та же ошибка и по совету zortexx получаю уже не 31 а 30, и ошибка остается(
она и не должна была уйти. Больше это не меньше. Больший массив тут проблем не вызовет
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
я тебя понял но проблема то осталась, как ее решить?
её надо анализировать. Смотреть, какие данные входят, какие успевают выйти. И если там уже не будет объяснения - писать в тп. Но я мало верю, что это баг зп
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: samsonnn

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

ssXXXss

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

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
  • Спасибо
Реакции: samsonnn

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

redman

Client
Регистрация
11.03.2016
Сообщения
554
Благодарностей
178
Баллы
43
Код:
string str = project.Variables["Result"].Value;
var split = str.Split('|');

project.Variables["Variable1"].Value = split[0];
project.Variables["Variable2"].Value = split[1];
project.Variables["Variable3"].Value = split[2];
project.Variables["Variable4"].Value = split[3];
project.Variables["Variable5"].Value = split[4];
и можно поставить на кубик с кодом стрелку "Необязательное", и всё ок
 
  • Спасибо
Реакции: fridayman и samsonnn

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113
Ребят всем спасибо кто пытался помочь, проблему решил, действительно проблема была у меня в шаблоне, не правильно значение ложилось в переменную, хотя визуально на глаз все было нормально.
 

ssXXXss

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

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 778
Благодарностей
1 448
Баллы
113

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