如何根据一个字符串表达式计算出结果?

时间:2023-01-09 11:22:23
比如,我有一个字符串
string a="2-1+3";

然后我想根据这个字符串表达式计算出结果,也就是4
如何实现呢?

13 个解决方案

#2


动态编译

#3


DataTable dt = New DataTable();
string a="2-1+3";
Console.WriteLine(dt.Compute(a, ""));

#4


http://topic.csdn.net/u/20110430/02/a3a306f8-2e21-4271-b3c5-35e2018933be.html

#5


顺便再问个问题可以吗?

        System.Xml.XmlWriter a = System.Xml.XmlWriter.Create("E:\\a.xml");
                a.WriteStartDocument();
                a.WriteStartElement("abc");
                a.WriteValue(new Rectangle(0, 0, 10, 10)); //我想写入一个Rectangle,可以实现吗?如果不能,怎么保存Rectangle到xml中去呢?
                a.Close();

#6


a.WriteValue(string.Format("{0},{1},{2},{3}", 0, 0, 10, 10));

#7


引用 6 楼 caozhy 的回复:
a.WriteValue(string.Format("{0},{1},{2},{3}", 0, 0, 10, 10));


那要怎么读取并转换成Rectangle呢?

#8


string s = "0,0,10,10";
int[] param = s.Split(',').Select(x => Convert.ToInt32(x)).ToArray();
Rectangle rect = new Rectangle(param[0], param[1], param[2], param[3]);

#9


动态编译?LZ可以去看下System.CodeDom,System.CodeDom.Compiler下的类

#10


Spring.net 的 Expression Evaluation有该功能,可以学习下。
如果是在web页面上的话js的eval更简单

#11


菜鸟飘过看看了

#12




object obj = Microsoft.JScript.Eval.JScriptEvaluate("1+2", Microsoft.JScript.Vsa.VsaEngine.CreateEngine()).ToString();
//obj=3

#13


该回复于2011-11-25 15:49:59被版主删除

#1


#2


动态编译

#3


DataTable dt = New DataTable();
string a="2-1+3";
Console.WriteLine(dt.Compute(a, ""));

#4


http://topic.csdn.net/u/20110430/02/a3a306f8-2e21-4271-b3c5-35e2018933be.html

#5


顺便再问个问题可以吗?

        System.Xml.XmlWriter a = System.Xml.XmlWriter.Create("E:\\a.xml");
                a.WriteStartDocument();
                a.WriteStartElement("abc");
                a.WriteValue(new Rectangle(0, 0, 10, 10)); //我想写入一个Rectangle,可以实现吗?如果不能,怎么保存Rectangle到xml中去呢?
                a.Close();

#6


a.WriteValue(string.Format("{0},{1},{2},{3}", 0, 0, 10, 10));

#7


引用 6 楼 caozhy 的回复:
a.WriteValue(string.Format("{0},{1},{2},{3}", 0, 0, 10, 10));


那要怎么读取并转换成Rectangle呢?

#8


string s = "0,0,10,10";
int[] param = s.Split(',').Select(x => Convert.ToInt32(x)).ToArray();
Rectangle rect = new Rectangle(param[0], param[1], param[2], param[3]);

#9


动态编译?LZ可以去看下System.CodeDom,System.CodeDom.Compiler下的类

#10


Spring.net 的 Expression Evaluation有该功能,可以学习下。
如果是在web页面上的话js的eval更简单

#11


菜鸟飘过看看了

#12




object obj = Microsoft.JScript.Eval.JScriptEvaluate("1+2", Microsoft.JScript.Vsa.VsaEngine.CreateEngine()).ToString();
//obj=3

#13


该回复于2011-11-25 15:49:59被版主删除