2013-03-14 2 views
0

Visual Studio Web Developer (Asp C#)에서 양식 기반 계산기를 작성해야합니다. 클릭 한 단추의 값을 표시하는 텍스트 상자가 있습니다 (+, -,/*) ...수학적 문자열의 결과 계산 Asp.net C#

이제

난이 가능한 경우는, 그 텍스트 상자의 문자열 값을 계산하려는 ...

편집 : 나는 JS가이 일을 아주 쉬운 방법이 있는지 알고 eval (stringholdername)을 사용; 하지만 ASP C에서 이와 동등한 것을 찾지 못했습니다. C#

+0

Asp-Classic은 VB 스크립트입니다. –

+0

가능하고 매우 간단해야합니다. –

+2

이 상자에 넣을 수있는 것보다 더 많은 시간을 묻습니다. [C# 평가 문자열 "3 \ * (4 + 2)"yield int 18] (http://stackoverflow.com/questions/333737/), [런타임에 새 코드 컴파일 및 실행?] (http : // stackoverflow. com/questions/234217 /), [수학적 표현을 평가하는 가장 짧은 방법] (http://stackoverflow.com/questions/1437964/), ... –

답변

0

NCalc을 보면 오픈 소스 수학 표현식 평가자입니다.

+0

은 플러그인이 없기 때문에 플러그인을 사용하지 않는 방법이 없습니다. 내가 theml을 사용할 수 있는지 모르겠다. –

+0

@ DinoPrašo "플러그인"이 아니라 간단하게 활용할 수있는 라이브러리 DLL입니다. 이것이 학교 과제라면 "휠을 다시 발명하지 말고 이것, 이것을 사용 하시겠습니까?"라고 간단한 답을주지 마십시오. –

0

당신은 어떤이 같은 간단한 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"); 

행운을 당신의 탐구와 함께.