당신은 어떤이 같은 간단한 recusive 방법을 사용할 수 있습니다 : -/* 및
public int Calculate(string expression)
{
int result = 0;
string[] expressions = expression.Split('+');
if (expressions.Length > 1)
{
result = 0;
foreach (string expr in expressions)
result += Calculate(expr);
return result;
}
expressions = expression.Split('-');
if (expressions.Length > 1)
{
result = Calculate(expressions[0]);
for (int i = 1; i < expressions.Length; i++)
result -= Calculate(expressions[i]);
return result;
}
expressions = expression.Split('*');
if (expressions.Length > 1)
{
result = 1;
foreach (string expr in expressions)
result *= Calculate(expr);
return result;
}
expressions = expression.Split('/');
if (expressions.Length > 1)
{
result = Calculate(expressions[0]);
for (int i = 1; i < expressions.Length; i++)
result /= Calculate(expressions[i]);
return result;
}
if (!int.TryParse(expression, out result))
throw new ArgumentException("Expression was not nummeric", "expression");
return result;
}
그것은 매우 간단하고 지원 (과)하지 않고 음수를, 그것은 단지 + 지원합니다.
는이처럼 사용
int result = Calculate("20*10+200/100");
행운을 당신의 탐구와 함께.
Asp-Classic은 VB 스크립트입니다. –
가능하고 매우 간단해야합니다. –
이 상자에 넣을 수있는 것보다 더 많은 시간을 묻습니다. [C# 평가 문자열 "3 \ * (4 + 2)"yield int 18] (http://stackoverflow.com/questions/333737/), [런타임에 새 코드 컴파일 및 실행?] (http : // stackoverflow. com/questions/234217 /), [수학적 표현을 평가하는 가장 짧은 방법] (http://stackoverflow.com/questions/1437964/), ... –