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

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

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

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

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

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

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы