Spintax Method! Как реализовать подстановку переменных?

Oleg_M

Client
Регистрация
27.02.2015
Сообщения
72
Благодарностей
28
Баллы
18
Всем привет!
Помогите пожалуйста понять, как заставить код работать правильно.
Код:
var name = project.Variables["User_name"].Value = "Олег";
var link = project.Variables["Links"].Value = String.Empty;

var message = String.Empty;
var messagesList = project.Lists["Text_random"]; // получаем строку рандомезированого текста с макросами переменных из списка
lock (SyncObjects.ListSyncer)
{
    message = messagesList[0];
    var result = Macros.TextProcessing.Spintax(message); // приминяем Спинтакс
   
    // ??? как его здесь заставить подставлять значения переменных
    project.SendErrorToLog (result, true);
    return result;
}
Возвращает вот такое значение:
Код:
Выполнение кода C#  Результат: Добрый день -Variable.User_name-! Как дела? -Variable.Links-.
А нужно, чтоб подставлялись значения переменных.
В кубиках выполнять не вариант. Этот код, маленькая часть большого кода, который целиком обернут в цикл while.
 

Вложения

  • 11,5 КБ Просмотры: 164

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
если устроит, попробуй так
{Привет|Здаров|Добрый день} ! {Как дела|Что делаешь|Чем занимаешся|Что нового}?
Код:
var name = project.Variables["User_name"].Value;
var link = project.Variables["Links"].Value = String.Empty;
var message = String.Empty;

var messagesList = project.Lists["Text_random"]; // получаем рандомную строку рандомезированого текста с макросами переменных из списка
Random r = new Random();
var rand = r.Next(0, messagesList.Count);
lock (SyncObjects.ListSyncer)
{
    message = messagesList[rand];
    var result = Macros.TextProcessing.Spintax(message); // приминяем Спинтакс
    string[] arr = result.Split('!');
    string a = arr[0].Trim();
    string b = arr[1].Trim();
    project.SendInfoToLog("", ""+a+" "+name+" ! "+b+" "+link+"", true);
}
 
  • Спасибо
Реакции: Oleg_M

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
@sssXXXsss правильно мыслите

Нужно избавится от макроса переменных в тексте
Или придумать Свой макрос.
Например хранить текст Привет ИМЯИМЯ
а потом в коде ИМЯИМЯ менять на project.Variables["User_name"].Value
 
  • Спасибо
Реакции: Oleg_M

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 596
Благодарностей
1 014
Баллы
113
Постоянно сталкиваюсь с такой конструкцией сразу совет ТС делай "заготовки" в виде ##NAME## или %%NAME%% потом собираешь нужный массив (список) и меняешь всю в куче по циклу )
 
  • Спасибо
Реакции: Oleg_M

Oleg_M

Client
Регистрация
27.02.2015
Сообщения
72
Благодарностей
28
Баллы
18
Всем спасибо! Направление понял.
 
  • Спасибо
Реакции: LightWood

Oleg_M

Client
Регистрация
27.02.2015
Сообщения
72
Благодарностей
28
Баллы
18
Как говорится: "Где просто, там Ангелов со сто, а где мудрено, там ни одного!"
Вот код, который в моей ситуации отрабатывает на ура! Может кому пригодится.
Код:
var name = project.Variables["User_name"].Value = "Олег";
var link = project.Variables["Links"].Value = String.Empty;
var message = String.Empty;

var messagesList = project.Lists["Text_random"]; // получаем рандомную строку рандомезированого текста с макросами переменных из списка
Random r = new Random();
var rand = r.Next(0, messagesList.Count);
lock (SyncObjects.ListSyncer)
{
    message = messagesList[rand];
    var result = Macros.TextProcessing.Spintax(message); // применяем Спинтакс
    result = result.Replace("-Variable.User_name-", project.Variables["User_name"].Value).Replace("-Variable.Links-", project.Variables["Links"].Value);
    project.SendInfoToLog(result, true);
    return result;
}
P.S. Спасибо Антон!!! :dh:
 
  • Спасибо
Реакции: stanar

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