Is there any way to parse a string in vb.net (like, built in methods), that can do math like Eval can? For example, 3+(7/3.5) as a string would return 2.
I am not asking for you to code this for me, I just want to know if there is a built in way to do this, if there is not I will code it myself.
I can wager that it would not be able to parse stuff like Sin(90) on its own, and I understand that would need to be replaced by Math.Sin(90).
If there is a built in method, how do you use it?
There’s a shortcut for limited (ie. simple) math expressions by using the DataTable.Compute method. Obviously, this isn’t robust (limited functionality) and feels hackish to misuse the DataTable for this purpose, but I figured I would add to the current answers.
Example:
“Sin(90)” wouldn’t work with this approach. Refer to the DataColumn.Expression Property page for a list of supported functions, specifically under the “Aggregates” section.
Using the System.CodeDom namespace is an option.
Some helpful links:
EDIT: to address your comment, here is an approach to demonstrate replacing trigonometric functions with their equivalent Math class methods.
C#
VB.NET
Note, however, that you need to know the contents of the “arg” group. I know they are ints, so I used Int32.Parse on them. If they are a combination of items then this simple approach won’t work. I suspect you will constantly need to band-aid the solution if it gets too complicated with more unsupported function calls, in which case the CodeDom approach or others may be more suitable.