В каждой переменной получить результат Spintax

kagorec

Client
Регистрация
24.08.2013
Сообщения
919
Благодарностей
473
Баллы
63
Большой список переменных, в каждой переменной содержится список вариантов например {1|один|два|seven} из всех всегда случайным образом нужно только один вариант.

Подскажите как можно в переменных обработать данные Spintax?

На форуме есть замечательная тема:
Чтение параметров в автосоздаваемые переменные из ini файла одним сниппетом

В конфиг подготовил минишаблон случайных данных {|||} - при запуске зенношаблона в каждой переменной содержится {1|один|два|seven}. Вставляя переменную в строку сохраняемого документа то получаю результат {1|один|два|seven} а надо seven например. Повторюсь - переменных очень много, и вариант с дополнительным кубиком "Обработка текста" по каждой переменной не подходит, поскольку переменные со временем будут редактироваться\добавляться
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
380
Баллы
63
Большой список переменных, в каждой переменной содержится список вариантов например {1|один|два|seven} из всех всегда случайным образом нужно только один вариант.

Подскажите как можно в переменных обработать данные Spintax?

На форуме есть замечательная тема:
Чтение параметров в автосоздаваемые переменные из ini файла одним сниппетом

В конфиг подготовил минишаблон случайных данных {|||} - при запуске зенношаблона в каждой переменной содержится {1|один|два|seven}. Вставляя переменную в строку сохраняемого документа то получаю результат {1|один|два|seven} а надо seven например. Повторюсь - переменных очень много, и вариант с дополнительным кубиком "Обработка текста" по каждой переменной не подходит, поскольку переменные со временем будут редактироваться\добавляться
Не знаю, правильно понял задачу или нет, собственно вот:
Код:
string variable1 = "Сработала переменная №{1| один}";
string variable2 = "Сработала переменная №{2| два}";
string variable3 = "Сработала переменная №{3| три}";
string variable4 = "Сработала переменная №{4| четыре}";
string variable5 = "Сработала переменная №{5| пять}";
string variable6 = "Сработала переменная №{6| шесть}";
string textForSpintax = "{" +variable1+"|"+variable2+"|"+variable3+"|"+variable4+"|"+variable5+"|"+variable6+"}";
string Result = new Macros.Spintaxer().SpinString(textForSpintax, true);
return Result;
Тоже самое, но через массив:
Код:
string[] arr = {project.Variables["zero"].Value, project.Variables["one"].Value, project.Variables["two"].Value, project.Variables["three"].Value, project.Variables["four"].Value, project.Variables["five"].Value};
int i = Global.Classes.rnd.Next(0, arr.Length);
string Result = new Macros.Spintaxer().SpinString(arr[i], true);
return Result;
Сделал, но не успел написать, тоже через массив, но уже с перебором каждой переменной. На входе одни данные, на выходе значения уже прогнанные через спинтакс.
Код:
string[] arr = {project.Variables["zero"].Value, project.Variables["one"].Value, project.Variables["two"].Value, project.Variables["three"].Value, project.Variables["four"].Value, project.Variables["five"].Value};
int i = 0;
foreach (string Variable in arr){
    string Result = new Macros.Spintaxer().SpinString(Variable, true);
    project.Variables["Variable"+i.ToString()].Value = Result;
    project.SendInfoToLog("",string.Format("Переменная номер: {0}, значение {1}", i, Result));
    i++;
}
upload_2018-12-11_1-48-9.png
 
Последнее редактирование:
  • Спасибо
Реакции: kagorec

kagorec

Client
Регистрация
24.08.2013
Сообщения
919
Благодарностей
473
Баллы
63
Спасибо.
В кубик C# зарядил
Не знаю, правильно понял задачу или нет, собственно вот:
...
Тоже самое, но через массив:
Код:
string[] arr = {project.Variables["zero"].Value, project.Variables["one"].Value, project.Variables["two"].Value, project.Variables["three"].Value, project.Variables["four"].Value, project.Variables["five"].Value};
int i = Global.Classes.rnd.Next(0, arr.Length);
string Result = new Macros.Spintaxer().SpinString(arr[i], true);
return Result;
...
Сменил названия переменных. Сработало без ошибок но содержимое переменных не изменилось.

Суть вопроса - обработка содержимого каждой переменной если вида {1|2|3} то такой Spintax надо обработать и оставить один вариант например 3
Во время запуска шаблона, переменные заполнены

Было бы здорово, чтоб одним снипетом обработало содержимое сотни переменных вида {1|2|3} и оставило один соответствующий вариант у каждой переменной (без создания новых).
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
380
Баллы
63
Спасибо.
В кубик C# зарядил

Сменил названия переменных. Сработало без ошибок но содержимое переменных не изменилось.

Суть вопроса - обработка содержимого каждой переменной если вида {1|2|3} то такой Spintax надо обработать и оставить один вариант например 3
Во время запуска шаблона, переменные заполнены

Было бы здорово, чтоб одним снипетом обработало содержимое сотни переменных вида {1|2|3} и оставило один соответствующий вариант у каждой переменной (без создания новых).
Ничего менять в коде не нужно, просто засунул в кубик C#, он автоматом считает значение всех существующих переменных и если там есть что прогнать через спинтакс, он прогонит и поменяет значение родительской переменной.
Код:
var variables = project.Variables.ToArray();
foreach (var variable in variables){
string variableName = new Regex(@"(?<=\[).*(?=,)").Match(variable.ToString()).ToString();
string textForSpintax = new Regex(@"\{.*}").Match(project.Variables[variableName].Value).ToString();
  if(string.IsNullOrEmpty(textForSpintax)||string.IsNullOrWhiteSpace(textForSpintax)) {
  continue;
  }
string SpinraxResult = new Macros.Spintaxer().SpinString(textForSpintax, true);
project.Variables[variableName].Value = SpinraxResult;
project.SendInfoToLog("",string.Format("Переменная: {0}, Значение: {1}, Результат Spintax: {2}",variableName, textForSpintax, SpinraxResult));
}
 
Последнее редактирование:
  • Спасибо
Реакции: kagorec

kagorec

Client
Регистрация
24.08.2013
Сообщения
919
Благодарностей
473
Баллы
63
Спасибо, это действительно то что надо было!
 

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