- Регистрация
- 16.12.2020
- Сообщения
- 251
- Благодарностей
- 125
- Баллы
- 43
Добрый день, делаю своего рода пользовательские макросы, которые хранятся в файле и имеют следующий вид:
Загрузку из файла, создание переменных типа: Macro_1,Macro_2,Macro_3,Macro_4, в которых хранятся обработанные значения спинтакса я уже реализовал. Теперь, чтобы макросы обрабатывались (они хранятся в виде Macro_1 и т.д.), необходимо заменить их на вид типа {-Variable.Macro_1-}.
Регулярку для поиска я вроде бы составил : Macro_.*?(?=\W|\ |\r|\n|$)
Код создания переменных и обработки макросов:
В С# разбираюсь плохо и вообще не нашел, как можно найденные вхождения оборачивать с двух сторон необходимым. В php давно бы сделал... Помогите, плиз)
Может, конечно, я вообще пошел не в ту степь и реализовать это можно как-нибудь по-другому, хз.
В тестах даже не понимаю, как в обработке текста в "На что заменять" искать вхождения, меняет просто на текст "$1":
Код:
Macro_1 -> {Macro_2|Macro_3|Macro_4}
Macro_2 -> {1|2|3}
Macro_3 -> {a|b|c}
Macro_4 -> {!|@|#}
Регулярку для поиска я вроде бы составил : Macro_.*?(?=\W|\ |\r|\n|$)
Код создания переменных и обработки макросов:
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);
SpinraxResult = System.Text.RegularExpressions.Regex.Replace(SpinraxResult, @"Macro_.*?(?=\W|\ |\r|\n|$)", "{"+"-тут найденное значение-"+"}");
project.Variables[variableName].Value = SpinraxResult;
project.SendInfoToLog("",string.Format("Переменная: {0}, Значение: {1}, Результат Spintax: {2}",variableName, textForSpintax, SpinraxResult));
}
Может, конечно, я вообще пошел не в ту степь и реализовать это можно как-нибудь по-другому, хз.
В тестах даже не понимаю, как в обработке текста в "На что заменять" искать вхождения, меняет просто на текст "$1":
Последнее редактирование: