把字符串当公式计算,并得到他的结果如字符串为200*100
我们在做人员工资的时候,因为每一个员工的业绩不同,那当然领导的工资也不同,我们为了让用户用的方便,我们可以让他输入公式,不如200*100的公式,我们村这条记录肯定是string类型存储,那我们怎么使程序能读懂这个公式呢,一种想法是利用正则表达式,可是我们也要考虑运算符的优先级问题,有没有更方便的方法呢?问了问qq群里的人,得到一种更方便的方法,js中有一个eval函数,它的作用是,如果参数时数字表达式的话,他就自动运算得到结果,那不是正是我们想要的结果吗?可是我们写成的是*.js文件。有时候我们想在.cs文件调用,那怎么办呢?Thinking!Vs中不是有一个JScript吗,他带了jsc.exe的工具,能够把js文件编译成.exe Or .dll,那不是整合我意吗!所以进入到C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下找到jsc.exe,输入jsc.exe /out:E:/Eval.dll e:/Eval.js 命令行,即可生成Eval.dll.那么有了这个dll那么接下来的就好说了,回到我们的Vs中右击点击引用,把这个dll引用到我们的解决方案中,然后再.cs代码文件中写入
Response.Write(CustomEval.eval(200 * 10+100/10-10));
即可,Eval.js文件的内容是:
![](/Images/OutliningIndicators/None.gif)
1
class CustomEval
2
{
3
static function eval(strExp)
4
{
5
return eval(strExp);
6
}
7![](/Images/OutliningIndicators/InBlock.gif)
8
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)