C#实现将字符串作为表达式运算

       曾经有个需求,要把一段字符串表达式作为C#的一段语句来执行。或者直接在sql中存储上不同的含参数的工时如 180+20*(n-4)。查出来之后带入参数计算。又好比在win7计算器中粘贴一个表达式,直接输出了结果。
碰到这个问题,查了一下网上的资料,发现有以下几种适合我的方案:
1.把表达式用字符串的各种函数拆分出来数字和小括号和运算符的组合。然后去运算(即自己写一个类和函数)
2.采用T-sql脚本计算。在oracle中 select  180+20*(10-4) from dual;  在sqlserver中  select  180+20*(10-4) 即可。
3.使用 JavaScript脚本函数中的eval方法。(常见)

使用.Net组件
/* 需将Microsoft.JScript 和Microsoft.Vsa加入参考并引用Microsoft.JScript */
public   object  EvalExpress( string  sExpression)
 
{
            Microsoft.JScript.Vsa.VsaEngine ve 
= Microsoft.JScript.Vsa.VsaEngine.CreateEngine();
            
return Microsoft.JScript.Eval.JScriptEvaluate(sExpression, ve);
}
或者使用.Com组件
/* 需引用com组件 microsoft  script control
public   object  EvalExpress( string  sExpression)
 
{
          
MSScriptControl.ScriptControl scc = new MSScriptControl.ScriptControl();
            scc.Eval( sExpression );

}   

    EvalExpress这个方法便可以将sExpression作为表达式执行,运行结果返回是object,但是根据参数内容不同,可以转换成bool、int、string等。
       不过既然是使用脚本引擎来执行的,速度不会太好。而且这两个组件在VS05中提示已过时,但是在提示信息和MSDN中没找到替代方案。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值