日期:2014-05-17  浏览次数:20743 次

‘数学公式解析器’你知多少?
最近在项目中需要解析用户输入的数学公式,主要功能如下:
1、如果输入:(X+Y)/Z 需要解析出三个算子:X,Y,Z
2、如果输入:X1 + X2 + Y1 需要解析出三个算子:X1, X2 , Y1
3、如果输入:X1*6 + Y1 或 X1*6 + Y1 + 12需要解析出两个算子:X1,Y1
总而言之就是需要解析出变量,对于数字不用解析。

------解决方案--------------------
Java code

    public static void main(String[] args) {
        String s = "(A1 + A2 + (X*90 + Y + 100)*N1)*100+A1";
        Matcher m = Pattern.compile("[a-zA-Z]+\\d*").matcher(s);
        Set<String> set = new HashSet<String>();
        while(m.find()){
            set.add(m.group());
        }
        for(String str : set){
            System.out.println(str);
        }
    }