字符串计算表达式

string str="4+4+2.1";

要的效果: double sum=4+4+2.1;

方案一:

动态计算表达式:

 1  public class Expression
 2     {
 3         object instance;
 4         MethodInfo method;
 5         /// <summary>
 6         /// 表达试运算
 7         /// </summary>
 8         /// <param name="expression">表达试</param>
 9         public Expression(string expression)
10         {
11             if (expression.IndexOf("return") < 0) expression = "return " + expression + ";";
12             string className = "Expression";
13             string methodName = "Compute";
14             CompilerParameters p = new CompilerParameters();
15             p.GenerateInMemory = true;
16             CompilerResults cr = new CSharpCodeProvider().CompileAssemblyFromSource(p, string.
17               Format("using System;sealed class {0}{{public double {1}(double x){{{2}}}}}",
18               className, methodName, expression));
19             if (cr.Errors.Count > 0)
20             {
21                 string msg = "Expression(\"" + expression + "\"): \n";
22                 foreach (CompilerError err in cr.Errors) msg += err.ToString() + "\n";
23                 throw new Exception(msg);
24             }
25             instance = cr.CompiledAssembly.CreateInstance(className);
26             method = instance.GetType().GetMethod(methodName);
27         }
28         /// <summary>
29         /// 处理数据
30         /// </summary>
31         /// <param name="x"></param>
32         /// <returns>返回计算值</returns>
33         public double Compute(double x)
34         {
35             return (double)method.Invoke(instance, new object[] { x });
36         }

方案二:

欢迎你们提供!

字符串计算表达式

时间: 2024-08-28 02:13:00

字符串计算表达式的相关文章

轻开平台(原WebEasy)字符串计算

1.1.1.                             字符串处理 轻开平台(WebEasy)提供了简便的字符串操作功能,写法类似于(计算表达式)书包取值表达式 开始符 动作 分隔符 字符串 结束符 @{ act : str } 注意:动作字符也不能再作为书包名称使用 例: 取字符串长度: @{length:str}--返回字符串长度 样例: @{length:WebEasy}返回7 测试: @{length:Edoit}返回几呢? 轻松互联网开发平台(Easy Do IT)资源下

轻开平台(原WebEasy)字符串计算2---字符串组的比较

轻开平台(WebEasy)提供了简便的字符串操作功能,写法类似于(计算表达式)书包取值表达式 开始符 动作 分隔符 字符串 结束符 @{ act : str } 注意:动作字符也不能再作为书包名称使用 例: 字符串组的比较 @{member:子串(字符串组/../..)}--字符串被包含计算 功能:判断子串是否被包含在字符串组(用/隔开)中,是则返回true,否则返回false,字符串组为空时返回true,(主要是用于权限判断,字符串组表示有权限的部门.角色或用户名,为空时表示不设限制) 样例:

12.6 实现选项的计算表达式

在 12.4 节,我们用选项值作为示例,介绍了用 LINQ 查询和 F# 计算表达式创建非标准计算的概念,处理选项值的代码,有自定义的值绑定读取实际值,如同标准值.既然我们已经知道如何转换计算表达式,也就知道我们的 Bind 成员会接收值和 lambda 函数.因为我们处理的是选项类型计算表达式,只有当值是 Some(x) 而不是 None 时,我们才打算执行 lambda 表达式:后一种情况,我们可以立即返回 None. 要运行前面的例子,我们需要在 C# 中实现 LINQ 查询运算符,在 F

Java动态执行计算表达式利器 -- ScriptEngine

在通过配置文件对系统进行参数配置时,有时需要更好的理解参数值的具体意义,往往采用计算表达式的方式设置,例如1天换成秒数为86400,如果写成24 * 60 * 60就很清晰的表达是一天的秒数.但是这个表达式通过properties的方式获取为字符串,这里就需要动态计算这个表达式. ScriptEngine这个对象专门用来处理动态执行表达式,主要调用其eval方法动态执行(类似于javascript中的eval方法),其返回结果为object对象:针对计算表达式的返回结果是double类型,所以这

(华为机试)双向链表实现字符串条件表达式的求值

描述: 给定一个以字符串形式表示的算术表达式,计算该表达式的值. 表达式支持如下运算:"+.-.*./",其中"*"和"/"的优先级要高于"+"和"-": 不需要考虑括号,且表达式之间没有空格: 例如:对于表达式"3-2+15*2",该表达式值为31. 运行时间限制: 60 Sec 内存限制: 256 MByte 输入: 加减乘除四则运算表达式,长度不超过1024字节,运算式中不含有括号

题目1101:计算表达式(栈的使用)

题目链接:http://ac.jobdu.com/problem.php?pid=1101 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: // // 1101 计算表达式.cpp // Jobdu // // Created by PengFei_Zheng on 06/05/2017. // Copyright © 2017 PengFei_Zheng. All rights reserved. // #include <stdi

华为上机练习题--计算表达式

题目: 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形. 例如:  输入:3+8×2/9-2 输出:2 函数原型 public int getMyRet(String str) 分析: 这个题目略显高端啊, 像我这种非专业的自学者,还真没有学过编译原理之类的课程, 要自己实现一个这种小型的编译器是非常困难啊, 所幸的是这个题目是用java来实现的, 而我本身也曾经看到过用java来实现这类的问题, 这类问题有一种方法就是实现类编译器功能的函数, 这个我是驾驭不

Visual Studio断点调试, 无法监视变量, 提示无法计算表达式

在使用Visual Studio 2012进行断点调试时,对某个变量添加监视,出现"无法计算表达式"的提示. 解决办法:依次点击菜单栏中的"调试"→"图形"→"启动诊断" 期间会出现类似如下界面: 公共符号下载完毕,断点调试,变量监视功能恢复正常!

stack计算表达式的值

9.52 使用stack对象处理带圆括号的表达式.遇到左圆括号时,将其标记下来.当你在一个左括号之后遇到右圆括号时,弹出stack对象中这两边括号之间的元素,直到遇到左括号,将左括号也一起弹出栈. 接着在stack对象中压入一个值,用以表明这个用一对圆括号括起来的表达式已经被替换. 程序如下: #include<iostream> #include<stack> #include<string> using namespace std; int main() { sta