式子:string str = "a*(b-c)";
float a=2,b=10,c=9.5;
做一个替换后将str变成:str="2*(10-9.5)";
怎么得到真正的值1呢?
------解决方案--------------------------------------------------------
这个你得 自己写一套解析的方法
------解决方案--------------------------------------------------------
LS 说的对,你要自己写解析方法,这个就像做复杂的四则运算一样,早起这中算法很难得,看你小时候的计算器就知道了,现在 很简单了,你查下,很多资料的,如果 是对称的,可以考虑用栈
------解决方案--------------------------------------------------------
- C# code
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { string str = "a * (b - c)"; string str1 = "2*(10-9.5)"; string str2 = Compute(str1); Console.WriteLine(str); Console.WriteLine(str1); Console.WriteLine(str2); Console.ReadLine(); } static string Compute(string str) { string a = str.Substring(0,str.IndexOf('*')); string b = str.Substring(str.IndexOf('(')+1,str.IndexOf('-')-str.IndexOf('(')-1); string c = str.Substring(str.IndexOf('-')+1, str.IndexOf(')') - str.IndexOf('-') - 1); double temp = Convert.ToDouble(a) * (Convert.ToDouble(b) - Convert.ToDouble(c));; return Convert.ToString(temp); } }
------解决方案--------------------------------------------------------
你这不科学啊,,,比较死
------解决方案--------------------------------------------------------
放到查询分析器里面执行多直接,或者写到存储过程里专门负责此类逻辑,项目里面封装好方法,直接调用,传个字符串类型的参数就ok
------解决方案--------------------------------------------------------
string str = Convert.ToDecimal(a)*(Convert.ToDecimal(b)-Convert.ToDecimal(c)).ToString();
------解决方案--------------------------------------------------------
好方法。。