Помогите, пожалуйста, найти в совпадения числа в переменной.

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Здравствуйте!

Помогите, пожалуйста, советом. В переменной у меня находятся числа месяца через запятую, к примеру: "1, 2, 3, 12, 16, 21"...

Вот это условие - '{-Variable.dni-}'.Contains('{-TimeNow.Day-}') - некорректно срабатывает. То бишь, если сегодня первое число, то это условие выдает положительный результат не только на единицу, но и на 12, и на 21... В общем на все, где есть цифра "1".

В этом и задача... Целый день не могу решить ее...
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 715
Баллы
113
можно запятую к Day добавлять, но в исходную строку надо предварительно в конец добавить запятую
можно сделать сплит по запятой и сделать поиск уже в массиве
 

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Если вам не сложно, можно пример?
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
Судя по строке '{-Variable.dni-}'.Contains('{-TimeNow.Day-}') всё это дело запускается в экшене "C# код", верно? В данном экшене не надо использовать переменные проекта вида {-Variable.name-}. В ProjectMaker'е данная конструкция отработает, но вот в ZP будут проблемы. При работе через C# необходимо обращаться к переменным проекта таким образом - project.Variables["name"].Value.

Теперь по сути вопроса:
C#:
// Разбиваем строку с днями по запятой.
List<string> days_str = project.Variables["dni"].Value.Split(',').ToList();
// Преобразуем строки в целочисленный тип (дополнительно избавимся от
// пробелов в начале и конце каждого элемента)
List<int> days_int = days_str.Select(x => Convert.ToInt32(x)).ToList();

// Проверяем входит ли сегодняшнее число в наш список.
return days_int.Contains(DateTime.Today.Day);
 

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Судя по строке '{-Variable.dni-}'.Contains('{-TimeNow.Day-}') всё это дело запускается в экшене "C# код", верно? В данном экшене не надо использовать переменные проекта вида {-Variable.name-}. В ProjectMaker'е данная конструкция отработает, но вот в ZP будут проблемы. При работе через C# необходимо обращаться к переменным проекта таким образом - project.Variables["name"].Value.

Теперь по сути вопроса:
C#:
// Разбиваем строку с днями по запятой.
List<string> days_str = project.Variables["dni"].Value.Split(',').ToList();
// Преобразуем строки в целочисленный тип (дополнительно избавимся от
// пробелов в начале и конце каждого элемента)
List<int> days_int = days_str.Select(x => Convert.ToInt32(x)).ToList();

// Проверяем входит ли сегодняшнее число в наш список.
return days_int.Contains(DateTime.Today.Day);

Огромное вам спасибо! Вроде работает!
 

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
А не поможете решить тоже самое с месяцами?
 
Последнее редактирование:

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 816
Баллы
113
а можно тоже самое прописать для месяцев?
Во второй строке заменяем dni на имя переменной, в которой будут храниться номера месяцев (формат должен быть тот же - через запятую в одну строку).

В последней строке меняем Day на Month
 

Эдгар

Client
Регистрация
20.03.2020
Сообщения
112
Благодарностей
5
Баллы
18
Во второй строке заменяем dni на имя переменной, в которой будут храниться номера месяцев (формат должен быть тот же - через запятую в одну строку).

В последней строке меняем Day на Month
От души благодарю за помощь! Сегодня целый день промучался с этой задачей...
 

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