比如我定义一个变量,String s = "1+2*3+(2+2)/2";我想得到字符串中数字表达式的值,当然这只是简单的数字表达式,还有更复杂的,请问在java中怎么处理??

解决方案 »

  1.   


    不好意思,忘贴地址了http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
    看看jdk中关于Pattern类的API说明
      

  2.   

    用正则表达式没问题,问题是我解析出来了,里面还有一些()等符号,怎么一起带出来,而在oracle里面,可以直接 select '1+2*3+(2+2)/2' from dual 直接进行计算,java能不能直接算出来??
      

  3.   

    在java正则表达式中(可以用\\(进行匹配,你可以先把表达式解析出来,然后用SQL算
      

  4.   

    public static void main(String[] args) throws Exception {
      ScriptEngineManager mgr = new ScriptEngineManager();
      ScriptEngine engine = mgr.getEngineByName("javascript");
      Number result = (Number) engine.eval("1+2*3+4");
      System.out.println(result);
    }
      

  5.   


    我现在就是这么干的,因为这样的表达式太多,用sql会影响效率。
      

  6.   


    ScriptEngineManager 是jdk1.6里面吧,用jdk1.6里面的api不行,因为websphere7不支持jdk1.6,还有别的方法吗??
      

  7.   


    我是在服务器端执行的,怎么调用javascript??
      

  8.   

    这里正则表达式根本没有任何用可以自己写解析器(JavaCC,Anltr等)或者使用JavaScript(rhino)服务器也可以通过rhino执行JavaScript的
      

  9.   

    javacc是可以实现
    但是有点大炮打蚊子的感觉
      

  10.   

    这种方式最简单,也最实用,可惜jdk1.5不支持。
      

  11.   

    不能用1.6的话,那么就像ChDw说的那样,用rhino,http://www.mozilla.org/rhino
      

  12.   

    String s1="1";
    String s2="2";
    int totle=Integer.parseInt(s1)+Integer.parseInt(s2);
    System.out.println(totle);