为了账号安全,请及时绑定邮箱和手机立即绑定

字符串运算符

字符串运算符

C#
繁星淼淼 2019-11-19 14:38:28
我需要评估在C#中以字符串形式呈现给我的数学表达式。示例noddy,但获得该字符串两端的点作为表达式。我需要评估然后填充一个int。与其他语言一样,C#中没有Eval()。String myString = "3*4";编辑:我在VS2008上尝试了Microsoft.JScript。=不推荐使用的方法(但仍然符合-警告)但是我正在使用的Microsoft.JScript dll在起作用公共对象InvokeMember(字符串名称,BindingFlags invokeAttr,活页夹装订器,对象目标,对象[] args);抱怨缺少“;” 去搞清楚...编辑2解决方案-是codeDom的一个-它起作用了,因为没有安全问题-只有我会运行代码。非常感谢您的答复...而且新《龙书》的链接很棒编辑3Matt dataTable.Compute()也可以工作-出于对安全性的关注甚至更好。(注意检查参数)
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

从我的角度来看,您有两个选择-使用表达式评估器或构造,即时编译和运行C#代码。


我将使用一个表达式评估程序库,因为您不必担心任何安全性问题。也就是说,您可能无法在中等信任环境(例如大多数共享托管服务器)中使用代码生成。


这是生成代码以评估表达式的示例:http : //www.vbforums.com/showthread.php?t=397264


查看完整回答
反对 回复 2019-11-19
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

所有其他答案都可能是过度杀伤力。


如果您只需要简单的算术,请执行此操作。


        DataTable dummy = new DataTable();

        Console.WriteLine(dummy.Compute("15 / 3",string.Empty));

编辑:更多信息。请查阅MSDN文档中该类的Expression属性System.Data.DataColumn。“表达式语法”中的内容概述了除算术运算符之外还可以使用的命令列表。(例如IIF,LEN等)。感谢大家投票支持我的第一个发布的答案!


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信