2012-11-01 14 views
7

Ich möchte einen arithmetischen Ausdruck aus einer Zeichenfolge mit VB berechnen, irgendwelche Ideen?Bewerten mathematischen Ausdruck aus einer Zeichenfolge mit VB

Als Beispiel: "x + 2" aus einer Textbox, möchte ich den Ausdruck

+1

Ich glaube, Sie meinen Sie es als * Arithmetik * Ausdruck ausgeführt werden soll. Ein * regulärer * Ausdruck ist [etwas völlig anderes] (http://en.wikipedia.org/wiki/Regular_Ausdruck). Ich bin sicher, du wusstest, dass bereits – MarkJ

+3

mögliche Duplikate von [Doing Mathe in vb.net wie Eval in Javascript] (http://stackoverflow.com/questions/1452282/doing-math-in-vb-net-like-eval- in-javascript) – Boann

Antwort

9

Sie NCalc für diesen Einsatz bewerten. Er akzeptiert auch Parameter wie x, y, z, ...

Dim e As Expression = new Expression("2 + 3 * 5") 
Msgbox(17 = e.Evaluate()) 
+0

Wissen Sie, ob es [LaTex] (http://en.wikipedia.org/wiki/LaTeX) parsen kann? –

+0

@JohanLarsson Sorry, ich habe keine Ahnung :( –

+0

Es gibt keine bultin Lösungen auf .Net-Framework? –

1

Sie mxparser Bibliothek für dieses purpose.Give eine Referenz verwenden können in Ihrem Projekt mxparser.dll von ADD Referenztaste Microsoft klicken Visuelle Studio.Der Quellcode der mxparser-Bibliothek oder die neueste DLL-Datei kann von www.mathparser.org stammen. Der mXparser ist ein Math Parser für Java, Android, C# .NET (CLS) -Bibliotheken.

Imports org.mariuszgromada.math.mxparser 
Private Function evaluate(ByVal str As String) AS Double 
Dim expr As Expression = New Expression(str) 
DIM d1 As Double 
d1=0 
d1=expr.calculate() 
return d1 
End Function 

Aufruf an die Funktion kann wie folgt sein.

DIM str as String 
str="" 
str=((45^5)/45))*(5*6) 

Dim d as Double 
d=0 
d=evaluate(str) 
MsgBox(" The result of the expression is " + d.ToString) 
+0

Für mXparser (http://mathparser.org/) gibt es sogar nettes "Hallo Welt" Tutorial für VB :-) http://mathparser.org/mxparser-hello - world/mxparser-hello - world - visual - basic/ –

6
Dim equation As String = "2+6/2" 
Dim result = New DataTable().Compute(equation, Nothing) 
+0

Diese Antwort erfordert keine zusätzliche Bibliothek hinzugefügt werden Projekt:) – craigster

Verwandte Themen