Как правильно обработать строку?

209
04 февраля 2019, 16:40

Есть строка, которая может иметь следующий вид, числа в конце строки каждый раз разные:

var str = "{Count}-1"
var str = "{Count}+5"
var str = "{Count}/3"
var str = "{Count}*2"

Как мне обработать эту строку, что бы в строке осталось просто var str = "{Count}", в отдельной переменной было бы арифметическое действие, например: var arifm = "+" и в третьей переменной было бы число, например: var count = 10. Каким образом это можно сделать?

Answer 1

Решение с помощью регулярки:

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;
READ ALSO
Надо ли тестировать static?

Надо ли тестировать static?

И снова к вопросу, надо ли тестировать и использовать статические методыЧто-то эта тема опять всплыла: раз, два

202
html блок как переменная

html блок как переменная

Как правильно сохранить html блок и использовать его как переменную в других файлах? Задача автоматизировать добавление некоторых кусков...

280
При большой нагрузке получаю SQLSTATE[HY000] [2003] Can't connect to MySQL server on

При большой нагрузке получаю SQLSTATE[HY000] [2003] Can't connect to MySQL server on

Запуcтили сайт, всё вроде бы хорошо, но начала вылетать ошибка что не может подключиться заметил что это происходит при большой нагрузкес...

237