Есть строка, которая может иметь следующий вид, числа в конце строки каждый раз разные:
var str = "{Count}-1"
var str = "{Count}+5"
var str = "{Count}/3"
var str = "{Count}*2"
Как мне обработать эту строку, что бы в строке осталось просто var str = "{Count}", в отдельной переменной было бы арифметическое действие, например: var arifm = "+" и в третьей переменной было бы число, например: var count = 10. Каким образом это можно сделать?
Решение с помощью регулярки:
var pattern = @"(?'param'\{\w+\})(?'arifm'.)(?'count'\d+)";
var input = @"{Count}-1";
var match = Regex.Match(input, pattern);
var param = match.Groups["param"].Value;
var arifm = match.Groups["arifm"].Value;
var count = match.Groups["count"].Value;
Регулярка простая, для удобства использования я добавил именованные группы.
\{\w+\} — захватывает фигурные скобки и последовательность (1 и более)
букв/цифр/подчеркивания между ними
. — захватывает один любой символ
\d+ — захватывает последовательность (1 и более) цифр
(?'name'pattern) — создает именованную группу, соответствующую шаблону pattern,
значение которой потом можно будет извлечь по имени name
Можно укоротить регулярку до такой: (\{\w+\})(.)(\d+), но извлекать группы придется по индексам (отсчет с 1, т. к. нулевая группа — весь шаблон полностью):
var param = match.Groups[1].Value;
var arifm = match.Groups[2].Value;
var count = match.Groups[3].Value;
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости