Laden...

Wie beachte ich Punkrechnung vor Strichrechnung bei Benutzereingaben

3 Antworten
1,588 Aufrufe
Letzter Beitrag: vor 9 Jahren
Wie beachte ich Punkrechnung vor Strichrechnung bei Benutzereingaben

Hallo,

ich bekomme via Gui(Usereingaben) einfache Formel wie z.b. 2+23. Wenn ich diesen string splitte und ausrechne, kommt 12 heraus (Punkrechnung vor Strichrechnung wird nicht beachtet). Ich müsste also 23+2 rechnen. Da ich aber nicht weiss, was der User eintippt, gibt es beliebig viele Kombinationen.
Hat jemand eine einfache Lösung für dieses Problem?
Danke!

Benutze doch einen fertigen Parser wie z.B. Parser für mathematische Formeln

Du benötigst einen Parser für mathematische Ausdrücke. Man kann sich selbst einen bauen - hier im Forum ist das Thema ebenfalls nicht sooooo selten - oder eine der Framework-Klassen benutzen, die so etwas bereits bieten.

DataTable.Compute

...oder das ScriptControl benutzen (Verweis hinzufügen -> "COM" -> "Typbibliotheken" -> "Microsoft Script Control 1.0")


ScriptControl script = new ScriptControl { Language = "VBScript" };
Console.WriteLine(script.Eval("2 + 2 * 3"));

Gibt noch etliche andere Möglichkeiten.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)