这个表达式引擎只有短短的100多行,却能实现包括加减乘除、括号优先级在内的运算,可以在“处理表达式”函数中自行扩展想要处理的算法。这里面算法的难点主要在于如何实现在多级括号存在的情况下,能取出最外层的一对括号,“成对处理”函数可以广泛的应用在爬虫、数据抓取的软件中。

不多说,先上源码

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Calculate {private Hashtable<String, Object> 堆栈值 = new Hashtable<>();private int 表达式游标 = 0;public static List<String> 成对处理(String code, String start, String end) {List<String> subResult = new ArrayList<>();String temp = "";String nextLevelCode = "";int level = 0;for (char codeChar : code.toCharArray()) {temp += codeChar;if (temp.endsWith(end)) {level--;if (level == 0) {subResult.add(nextLevelCode.toString());nextLevelCode = "";}

最简单却又极具扩展性的Java表达式引擎,自创编程语言必备相关推荐

  1. elasticsearch 一款高扩展性的分布式全文检索引擎

    什么是ElasticSearch 文章目录 什么是ElasticSearch 什么是全文检索 全文检索的应用场景 索引和搜索流程图 用Postman进行Restful接口访问 Elaticsearch ...

  2. 一周极客热文:Java开发牛人十大必备网站

    新时代的学习不再是陈旧的课堂教学,而是个性化的学习,而网络自学也成为很多人的学习新方式,网站可以提供信息,以及一些很棒的讲座, 还能解答一般问题.面试问题等,质量是衡量一个网站的关键因素.日前,一个资 ...

  3. android 日志框架封装,FLog: 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性、扩展性...

    FLog 一个基于函数组合的Android日志框架,拥有极简的结构和极高的灵活性.扩展性 下载 在根目录下的build.gradle中添加jitpack.io的maven地址 allprojects ...

  4. 饮料果汁海报设计,简单色彩手绘却极具生命力,成功吸引着消费者

    抓住了顾客的眼球,你就成功了一半.因此,很多美食果汁饮料海报的设计上都是煞费苦心. 那些具有视觉冲击力的海报心别人做的那么漂亮,自己却无从下手. 临摹学习下优图网 www.uppsd.com 带来的简 ...

  5. 区块链、货币和社交扩展性

    译注:本文原文<Money, blockchains, and social scalability>,作者Nick Szabo . 翻译简单说明如下:money可以是"金钱&q ...

  6. 区块链、货币和社交扩展性 1

    译注:本文原文<Money, blockchains, and social scalability>,作者Nick Szabo . 翻译简单说明如下:money可以是"金钱&q ...

  7. TCP接入层的负载均衡、高可用、扩展性架构

    转载自 TCP接入层的负载均衡.高可用.扩展性架构 一.web-server的负载均衡 互联网架构中,web-server接入一般使用nginx来做反向代理,实施负载均衡.整个架构分三层: 上游调用层 ...

  8. Fastsocket:高扩展性的 Socket 以及 Linux 内核的底层网络实现

    目录 简介 安装编译 测试结果 GitHub README 介绍 参加者 安装 从源安装 开关内核 系统配置 用法 合适的场景### 如何使用 演示服务器 评价 Nginx的 HAProxy 在线评估 ...

  9. 神舟台式计算机图片,扩展性媲美台式机!神舟战神K780G拆机图赏

    作为神舟战神K680E的升级进化版,战神K780G不仅拥有更大的17.3英寸屏幕,其独立显卡也从GeForce GTX 880M进化到了Maxwell核心的GTX980M独显,在游戏性能上有了长足的进 ...

最新文章

  1. 解决getOutputStream() has already been called for this response[java io流]
  2. windows安装包安装mysql5.7_Windows7 64位压缩包安装MySQL5.7.9
  3. FisherVector编码的来龙去脉
  4. Redis中的自动过期机制
  5. 13. Window blur() 方法
  6. gulp-rev-append md5版本号
  7. 窗口函数preceding和following字段
  8. 数据库 PK,NN,UQ,AI,BIN,UN,ZF等的含义 记录
  9. 用for循环写520个我喜欢你
  10. 微软任命 CEO 萨提亚·纳德拉为董事会主席
  11. 家用wifi能查到浏览记录吗_2020最好用的行车记录仪推荐
  12. 雷柏 V500PRO Win键失效
  13. Docker 容器退出状态码existed
  14. 如何把iPhone的照片传到Mac电脑
  15. 计算机科学引论英文精编pdf,计算机科学引论英文版.pdf
  16. 政策东风,助推万亿智能家居产业,2022各地智能家居政策大盘点
  17. BUUCTF-Crypto【1-20T】
  18. 16天进入“已问询”状态,上市进程神速,这家芯片设计企业凭什么?
  19. AIoT在智慧景区中的应用
  20. Bugtags 让你的 APP 测试轻松、上线安心

热门文章

  1. 使用Quartus13进行VHDL工程的编写与仿真
  2. 曹政谈数据分析:数据分析这点事
  3. js String转int
  4. 【数据结构】顺序表(C++)
  5. vue组件获取props_Vue组件选项props
  6. 真正有划时代意义的技术 - WebRTC
  7. 影视视频剪辑号真的可以赚钱?
  8. 解决启动虚拟机进入系统时宿主机自动重启状态问题
  9. QT中颜色选择器QColorDialog的重新实现
  10. 《剑指Offer(第2版)》读书笔记