VanilaSpirit Усложняете себе жизнь товарищи. Какие-то сплиты, регулярки... Зачем ? В условии стоит регулярку использовать ?
Ну и мой вариант сломается если поставить подряд два знака подряд + или -
например 1+-2+3
static private string SomeFunc(string formula)
{
char[] allowSymbols = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '-' };
int result = 0;
for (int i = 0; i < formula.Length - 1; i++)
{
// если текущий соответстует любому из доступых
if (allowSymbols.Any(x=> x.Equals(formula[i])))
{
switch (formula[i])
{
case '+':
result += int.Parse(formula[i+1].ToString());
i++;
break;
case '-':
result -= int.Parse(formula[i+1].ToString());
i++;
break;
default:
// запись первого символа, можно через индекс 0, но так красиво я считаю.
result = int.Parse(formula[i].ToString());
break;
}
}
else
{
return "wrong symbol";
}
}
return result.ToString();
}