| | |
| | | .map(obj -> { |
| | | return new BigDecimal((obj).toString()); |
| | | }).collect(Collectors.toList()); |
| | | System.out.println(bigDecimalList); |
| | | |
| | | //将中文的(转换英文的()) |
| | | formula = formula.replace("(", "(") |
| | |
| | | if (upperStr.matches(".*\\d.*")) { |
| | | upperStr = ""; |
| | | } |
| | | System.out.println(upperStr); |
| | | //然后获取最外面括号里面的值,再根据","分割 |
| | | int start = formula.indexOf("("); |
| | | int end = -1; |
| | |
| | | String[] bracketStrs = arguments.toArray(new String[0]); |
| | | List<BigDecimal> results = new ArrayList<>(); |
| | | for (String expr : bracketStrs) { |
| | | System.out.println("替换前" + expr); |
| | | Pattern pattern = Pattern.compile("([A-Z])(\\d+)"); |
| | | Matcher matcher = pattern.matcher(expr); |
| | | StringBuffer sb = new StringBuffer(); |
| | |
| | | } |
| | | } |
| | | matcher.appendTail(sb); |
| | | System.out.println("替换后" + sb.toString()); |
| | | |
| | | // 计算表达式 |
| | | ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); |
| | |
| | | throw new UnsupportedOperationException("暂不支持函数: " + upperStr); |
| | | } |
| | | } |
| | | System.out.println(results); |
| | | System.out.println("计算结果: " + finalResult); |
| | | |
| | | return finalResult.toString(); |
| | | // 否则:没有公式代表不需要计算,直接提取List里面的数据 |