Регулярные выражения. Переделать строку, сохранив значения - C#

Узнай цену своей работы

Формулировка задачи:

var buyMatches = Regex.Matches(buyCond, @"tf(\d+)\(Price(>|<|>=|<=|==)Prices(\d+)\.\.(\d+)(?:(\+|-)(PriceFilter\d+))?\)");
foreach (Match match in buyMatches)
{
    Regex.Replace(buyCond, match.Value, ComparePrevCandlesTails(первое вхождение, второе, третье, четвертое,пятое + шестое).ToString());
}
Причем второе вхождение (>,<,>=...) Нужно привести к собственному enum типу LogicalOperators. Например: '<' = LogicalOperators.less_than

Решение задачи: «Регулярные выражения. Переделать строку, сохранив значения»

textual
Листинг программы
string str = @"tf1(Price>Highs1..10-filter1)";
Dictionary<string, string> LogicalOperators = new Dictionary<string, string>() 
{
    {">", "greater_than"},
    {"<", "less_than"},
    {">=", "greater_than_or_equal_to"},
    {"<=", "less_than_or_equal_to"},
    {"==", "equal"},
};
str = Regex.Replace(str,
    @"tf(?<firstNum>\d+)[^><=]+(?<LogicalOperator>[><=]=?)(?<TailsType>[^\d]+)(?<fromNum>\d+)\.\.(?<toNum>\d+)(?<filter>[^)]+)",
    match =>
    {
        return String.Format(@"compare({0}, LogicalOperators.{1}, TailsTypes.{2}, {3}, {4}, {5}",
            match.Groups["firstNum"].Value,
            LogicalOperators[match.Groups["LogicalOperator"].Value],
            match.Groups["TailsType"].Value,
            match.Groups["fromNum"].Value,
            match.Groups["toNum"].Value,
            match.Groups["filter"].Value);
    });
Console.WriteLine(str);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы