现在有这样一个字符串  (0001+0005*4.2)/0008 其中0001 0005  0008都是代码
想解析成 单独的(A+B*4.2)/C  并单独将0001  0005 0008分别放在某3个变量中  
公式是不确定的,代码也是会变化的   请大哥们帮忙

解决方案 »

  1.   

    java 6 提供执行 JavaScript 脚本的功能,应该很容易就实现楼主的需求。
      

  2.   

    如果你的代码毫无规则的话,这就实现不了。如果代码没有规则的话,1000+1001  是解析成A+B、A+1001、1000+A,谁都无法判断,
    所以你得把你的代码规则说一说。
      

  3.   

    我们以前有个项目也碰到有公式计算,我是采用bsh实现的。
      

  4.   

    rumlee 大哥  不能通过公式的特殊字符来判断吗  代码是没有规则的 
      

  5.   

    google一下逆波兰式算法吧,说明和代码都有现成的.
      

  6.   

    3楼的大哥  如果是这样的规律  ('0001'+'0005'*4.2)/'0008' 代码 通过'引号包括起来
    再解析成 单独的(A+B*4.2)/C  并单独将0001  0005 0008分别放在某3个变量中  
    怎么写代码呢 大哥
      

  7.   

    http://www.blogjava.net/20070716/archive/2008/12/07/185527.html以前论坛好多人写过,我回帖太多,没法找,如只是实现简单的运算貌似不难,可以借鉴上面的实现,功能很多。
      

  8.   

    刚才论坛好像挂了,上不了下面这个就是lz最想要的吧。
    import groovy.lang.Binding;
    import groovy.lang.GroovyShell;public class GroovyTest {
    public static void main(String[] args) throws Exception {
    String formula = "(x*2)/4";
    Binding binding = new Binding();
    binding.setVariable("x", new Integer(6));
    GroovyShell shell = new GroovyShell(binding);
    Object value = shell.evaluate(formula);
    System.out.print(value);
    }
    }