Скрипт на С# Работа с месяцами

heks

Client
Регистрация
01.10.2013
Сообщения
1 354
Благодарностей
379
Баллы
83
Есть месяц который на странице появляется рандомно
этот месяц привязан к данным в таком формате

Январь;{-Variable.jan-}
Февраль;{-Variable.fevr-}
Март;{-Variable.mart-}
Апрель;{-Variable.aprel-}
Май;{-Variable.may-}
Июнь;{-Variable.iyn-}
Июль;{-Variable.iyl-}
Август;{-Variable.avgyst-}
Сентябрь;{-Variable.sent-}
Октябрь;{-Variable.oct-}
Ноябрь;{-Variable.november-}
Декабрь;{-Variable.desember-}

как на C# сделать что бы данные месяца взялись из одной переменной и положились в другую. Взялся месяц из переменной {-Variable.mes_default-} к примеру июнь и еще 2 месяца после него. Данные с первого месяца с переменной {-Variable.iyn-} нужно что бы положился в переменную {-Variable.mes1-}
следующий месяц июль{-Variable.iyl-} в переменную {-Variable.mes2-} и
третий месяц {-Variable.avgyst-} в переменную {-Variable.mes3-}
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 893
Благодарностей
2 625
Баллы
113
C#:
string mes_default = project.Variables["mes_default"].Value;
var queue = new Queue<string>();
    queue.Enqueue("Январь;jan");
    queue.Enqueue("Февраль;fevr");
    queue.Enqueue("Март;mart");
    queue.Enqueue("Апрель;aprel");
    queue.Enqueue("Май;may");
    queue.Enqueue("Июнь;iyn");
    queue.Enqueue("Июль;iyl");
    queue.Enqueue("Август;avgyst");
    queue.Enqueue("Сентябрь;sent");
    queue.Enqueue("Октябрь;oct");
    queue.Enqueue("Ноябрь;november");
    queue.Enqueue("Декабрь;desember");

for(int i=0;i<12;i++) {
    string line = queue.Dequeue();
    queue.Enqueue(line);
    
    string[] row = line.Split(new[]{';'}, 2);   
    if(mes_default.ToLower() == row.First().ToLower()){
        project.Variables["mes1"].Value = project.Variables[row.Last()].Value;
        for(int j=0;j<2;j++){
            line = queue.Dequeue();
            queue.Enqueue(line);
            row = line.Split(new[]{';'}, 2);
            switch(j){
                case 0:project.Variables["mes2"].Value = project.Variables[row.Last()].Value; break;
                case 1:project.Variables["mes3"].Value = project.Variables[row.Last()].Value; break;
                default: break;
            }                       
        }
        break;
    }   
}
 

heks

Client
Регистрация
01.10.2013
Сообщения
1 354
Благодарностей
379
Баллы
83
Спасибо все работает. Как всегда красавчик.
 
  • Спасибо
Реакции: BAZAg

lederer

Client
Регистрация
13.04.2013
Сообщения
211
Благодарностей
95
Баллы
28
Еще можно такой вариант использовать

C#:
// Словарь с месяцами и переменными
var monthValues = new Dictionary<string, string>
{
    {"Январь", "{-Variable.jan-}"},
    {"Февраль", "{-Variable.fevr-}"},
    {"Март", "{-Variable.mart-}"},
    {"Апрель", "{-Variable.aprel-}"},
    {"Май", "{-Variable.may-}"},
    {"Июнь", "{-Variable.iyn-}"},
    {"Июль", "{-Variable.iyl-}"},
    {"Август", "{-Variable.avgyst-}"},
    {"Сентябрь", "{-Variable.sent-}"},
    {"Октябрь", "{-Variable.oct-}"},
    {"Ноябрь", "{-Variable.november-}"},
    {"Декабрь", "{-Variable.desember-}"}
};

// Упорядоченный список месяцев
var monthNames = new List<string>(monthValues.Keys);

// Получаем значение месяца из переменной 
string mesDefault = project.Variables["mes_default"].Value;

// Находим индекс этого месяца
int startIndex = monthNames.IndexOf(mesDefault);

if (startIndex == -1)
{
    project.SendErrorToLog("Месяц не найден: " + mesDefault);
}
else
{
    // Получаем следующие 3 месяца по кругу
    string mes1 = monthValues[monthNames[startIndex % 12]];
    string mes2 = monthValues[monthNames[(startIndex + 1) % 12]];
    string mes3 = monthValues[monthNames[(startIndex + 2) % 12]];

    // Записываем их в переменные
    project.Variables["mes1"].Value = mes1;
    project.Variables["mes2"].Value = mes2;
    project.Variables["mes3"].Value = mes3;

}
 
  • Спасибо
Реакции: Sergodjan, heks и BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 893
Благодарностей
2 625
Баллы
113
Еще можно такой вариант использовать

C#:
// Словарь с месяцами и переменными
var monthValues = new Dictionary<string, string>
{
    {"Январь", "{-Variable.jan-}"},
    {"Февраль", "{-Variable.fevr-}"},
    {"Март", "{-Variable.mart-}"},
    {"Апрель", "{-Variable.aprel-}"},
    {"Май", "{-Variable.may-}"},
    {"Июнь", "{-Variable.iyn-}"},
    {"Июль", "{-Variable.iyl-}"},
    {"Август", "{-Variable.avgyst-}"},
    {"Сентябрь", "{-Variable.sent-}"},
    {"Октябрь", "{-Variable.oct-}"},
    {"Ноябрь", "{-Variable.november-}"},
    {"Декабрь", "{-Variable.desember-}"}
};

// Упорядоченный список месяцев
var monthNames = new List<string>(monthValues.Keys);

// Получаем значение месяца из переменной
string mesDefault = project.Variables["mes_default"].Value;

// Находим индекс этого месяца
int startIndex = monthNames.IndexOf(mesDefault);

if (startIndex == -1)
{
    project.SendErrorToLog("Месяц не найден: " + mesDefault);
}
else
{
    // Получаем следующие 3 месяца по кругу
    string mes1 = monthValues[monthNames[startIndex % 12]];
    string mes2 = monthValues[monthNames[(startIndex + 1) % 12]];
    string mes3 = monthValues[monthNames[(startIndex + 2) % 12]];

    // Записываем их в переменные
    project.Variables["mes1"].Value = mes1;
    project.Variables["mes2"].Value = mes2;
    project.Variables["mes3"].Value = mes3;

}
Отличный вариант!
Я не подумал о том, что можно использовать startIndex % 12.
Первое за что переживал, чтобы корректно отрабатывало при Декабрь (когда нужно вернуться в начало).
 

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