string Formula = “1+lg(10)*pow3(1)”;
这是一个计算公式形式的字符串
我想把里面的lg(10) 和pow3(1) 这两段字符提取出来
用C#的函数计算成数字以后,在替换到对应的位置
(中间的步骤 望各位 指点迷津)
最终就可以得到字符串:1+1*1
额,你这是问了一个很了不得的问题啊,能自己手动啃出来的,华为,BAT都可以随便进了
我们知道怎么弄,但是不会自己手动了,如果是学生到可以自己手动搞搞,能自己手动搞出来的学生,未来在这行基本不愁啥(提示:先把编译原理看完)
好了,废话不说了,直接给东西了
https://www.nuget.org/packages?q=expression+parser
专业术语表达:词法分析,表达式分析,VST虚拟语法树
通用技术:YACC,Lex,Anltr4
应用层设计:词法规则,访问者模式
上面两个连接是 人们已经做好的一些东西
后面的术语和技术是专业从事这方面的人才需要掌握的
当然就问题本身,也许会有人告诉你直接正则替换,而正则其实也是词法分析,模式匹配的成果。不过是你就一个公式俺们正则一下应付应付可以,你要有100个公式token而且还能互相嵌套的话,简单正则可没办法
附加:看了一下nuget的列表
MathParser.org-mXparser 这个到实现的挺齐备的
当然不是说一定让你用这个,只是大体告诉你,这种东西一般是往这个方向走