如何处理java中对{},[],() 的解析,不仅可以用正则,也可以用堆栈的方式,算法的想法做

  • 首先把字符串中的{,[,(压入栈,循环字符串,把},],)出栈。
  • 再用一个map存放{},[],() 。判断最后一个出栈的元素是否和第一个入栈的元素是否符合map。
  • 如果不符合,则出入的参数有误
  • 再把通过split的字符串进行拼接成自己想要的样子,就可以啦!
public static String[] getSplitString(String param) {

            String[] rawParams = param.split(",");
            int len = rawParams.length;
            ArrayStack stack = new ArrayStack(param.length());
            Map<String, String> map = new HashMap<>();
            map.put("{", "}");
            map.put("[", "]");
            map.put("(", ")");
            String[] gParams = new String[len];
            int index = 0;
            StringBuffer buffer = new StringBuffer();
            for (int i = 0; i < len; i++) {
                char[] c = rawParams[i].toCharArray();
                int l = c.length;
                for (int j = 0; j < l; j++) {
                    if (c[j] == 91 || c[j] == 123 || c[j] == 40) {
                        stack.push(c[j]);
                    }
                    if (c[j] == 93 || c[j] == 125 || c[j] == 41) {
                        String temp = String.valueOf(stack.pop());
                        if (c[j] != map.get(temp).toCharArray()[0]) {
                            return null;
                        }
                    }

                }

                if (stack.size() > 0) {
                    buffer.append(rawParams[i]);
                    buffer.append(",");
                } else {
                    gParams[index] = buffer.append(rawParams[i]).toString();
                    index++;
                    buffer = new StringBuffer();
                }

            }

            int glen = gParams.length;
            for (int k = 0; k < glen ; k++) {
                if (null == gParams[k]) {
                    continue;
                }
                char[] chars = gParams[k].toCharArray();
                int l = chars.length;
                if (chars[0] == 34 || chars[0] == 39) {
                    gParams[k] = String.valueOf(chars, 1, l - 2);
                }
            }
            return gParams;
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第五章******************************************************...
    fastwe阅读 730评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,282评论 0 4
  • JS基础 页面由三部分组成:html:超文本标记语言,负责页面结构css:层叠样式表,负责页面样式js:轻量级的脚...
    小贤笔记阅读 648评论 0 5
  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 3,976评论 1 10
  • 第一站:一哥牛肉面馆 这是一家有个性的面馆,毕加索和猫王,玛丽莲梦露,还有手工招牌牛肉面,北京...
    四月天_扎西曲呗阅读 929评论 0 2