问题描述
现在有个字符串:(a-b)*(b/3)我ab取到值分别为10和5我替换后字符串为(10-5)*(5/3)怎么能求出这个字符串的值(计算结果)呢?求解PS:公式很多硬算的话不灵活
解决方案
解决方案二:
第三方有很多方法,或者自己写一个后缀表达式算法,网上都有代码
解决方案三:
解决方案四:
CodePlex上NCalc这个类库,足以完成你的功能,内部是用Antlr实现的
解决方案五:
这个也挺好用的:
解决方案六:
NCalc我已经在项目中实现过了,还可以。
解决方案七:
因为公式是字符串,还得用正则表达式吧,按照计算顺序,先匹配到数字后面连接的是字母的,如2a、2b的,然后是括号里面的计算,如2*(a(2b+c))由内而外匹配,最后用递归,再然后是括号外的先乘除后加减,用到的知识不是很多,就是挺烦索的,要考虑各种可能
解决方案八:
中缀表达式转后缀表达式
解决方案九:
正则表达式挨个匹配变量,用值替换变量,剩下的就是类似js的eval
解决方案十:
如果LZ想实现动态计算功能,不妨考虑使用sqlite这个库,你计算时,把这个表达式,拼接成SQL语句,有返回结果是正确的,有异常时,就是出错了。DLL大小才800K。
解决方案十一:
如果是字符串的话,我看到楼上说的,好像可行性比较大,a,b都是动态的变量,然后把这个字符串全部切割成单个字符,然后挨着判断,SQL里边能够对公式进行计算,把AB的变量的值输入进去,小括号还是小括号,加减乘除都是加减乘除,应该就能获取到结果,我赶脚这样是可行的,你不妨试一下
时间: 2025-01-27 17:08:54