我现在是这样的情况, 有A、B两个数据库,现在就是我需要就A数据库中新更新的数据更新到B数据库中。当然需要有数据同步的两个数据库的表结构是相同的。但是在入到B库前可能需要对某些字段的值进行一些数学公式的运算,定义的公式中含有的变量就是改字段的属性名,现在需要将公式中属性名(变量)替换成数据库中真实数值然后返回给公式并计算出结果,最后入库。
追答那你不就得把公式的计算逻辑翻译成java函数,然后再调用呗,变量作为参数传进去。没有直接解析公式的API的
追问这一步我做好了,我写了一个工具类能够实现基本的数学运算 包括负数的运算,现在就是调用这个工具类得方法就能得到结果,现在就是需要在读取公式之后能够将其中的变量替换成数据库中数据,然后调用公式解析计算的到结果存入到库中。
追答你的工具是可以直接把算式的结果计算出来是么,比如说输入“2 ×(3 + 1)”就能放回8对吧?
然后你现在的需要被替换的运算式其实是“a × (b + c)”,从数据库里面取出来的是2,3,1对应去替换a,b,c,是这么回事么?
嗯, 我简化了其中的一些环节,我所需要处理的数据只是单独对某一字段而言的,都是独立处理的,所以每个公式里的变量也就是只有一个,我将所有定义的公式都定义为统一的变量V。这样就简化了很多的工作量。
追答如果是这样的话,解决方法就很多了,直接用replace也可以的吧,
比如你定义了一个公式 String str = "2 + V"; 的话,直接用str.replaceAll("V",你要替换成的东西);这样就可以了,你也可以用MessageFormat呀,定义一个公式把所有的V都换成“{0}”,比如String str = "2 + {0}"; 在调用MessageFormat.format(str , 你要替换成的东西);,这样就可以把“{0}”替换成你想要的啦
对思路应该是这样的,我试试。
追答恩 你试试 如果遇到什么问题 大家讨论讨论 帮你把问题解决了