Android计算器的正则表达式

时间:2017-01-13 09:42:52

标签: android regex

我正在为Android计算器编写一个正则表达式。 " + / - *"对于非十进制值是可以的,但问题出在"。"。我如何检查"。" ?

这是我的正则表达式:

"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"

这是我的计算方法:

 private double calc(String resultString) {
        String[] result = resultString.split("(?<=[^\\\\d.])(?=\\\\d)|(?<=\\\\d)(?=[^\\\\d.])");
        String op = null;
        double res = 0;

        for (String s : result) {
            if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/") ) {
                op = s;
            }
            else if(s.equals(".")){




            }




            else {
                if (op == null) {
                    res = Double.parseDouble(s);
                } else {
                    if (op.equals("+")) {
                        res = res + Double.parseDouble(s);
                    } else if (op.equals("-")) {
                        res = res - Double.parseDouble(s);
                    } else if (op.equals("*")) {
                        res *= Double.parseDouble(s);
                    } else if (op.equals("/")) {
                        res /= Double.parseDouble(s);
                    }


                }
            }
        }

        return res;


    }

1 个答案:

答案 0 :(得分:0)

.简写中删除\D,其中包含一个否定字符类[^\d.],该字符将匹配除数字和文字.之外的所有字符(请注意{{1}不必在字符类中进行转义,以便将其解析为文字点):

.

请参阅regex demo

online demo(在Java中):

"(?<=[^\\d.])(?=\\d)|(?<=\\d)(?=[^\\d.])"