当前位置: 首页 > news >正文

网站建设建站营销管理培训课程培训班

网站建设建站,营销管理培训课程培训班,c语言和c 哪个做网站好,.net做网站连续的KV的字符串,每个KV之间用","分隔,V中可嵌套KV的连续字符串结构,例如“ key1value1,key2value2,key3[key4value4,key5value5,key6[key7value7]],key8value8 请编写如下函数,给定字符串,输出嵌套结构的H…
连续的K=V的字符串,每个K=V之间用","分隔,V中可嵌套K=V的连续字符串结构,例如“
key1=value1,key2=value2,key3=[key4=value4,key5=value5,key6=[key7=value7]],key8=value8
请编写如下函数,给定字符串,输出嵌套结构的HashMap
HashMap<String, Object> parse(String input) {...
}

暂时没想出一个方法不用递归就能解析完的

解法1     只处理当前字符串第一个嵌套体位置的前面普通键值对,将第一个嵌套体内容递归处理,将第一个嵌套体后面剩余的字符串递归处理

 HashMap<String,Object> parse(String input){HashMap<String,Object> hashMap=new HashMap<>();char[] chars=input.toCharArray();int keyStart=0;int start=-1;//[位置int end=-1;//]位置int stack=0;//栈计数器for (int i=0;i<chars.length;i++){if(chars[i]=='['){stack++;if(stack==1){start=i+1;for(int j=i;j>0;j--){if(chars[j]==','){keyStart=j+1;break;}}}}else if(chars[i]==']'){if(stack==1){end=i;break;}stack--;}}String[] keyValueArray=new String[0];if(start>-1){//这里处理前半截if(keyStart-1>=0){keyValueArray=input.substring(0,keyStart-1).split(",");}//发现有[]  ,  递归处理String temp=input.substring(start,end);hashMap.put(input.substring(keyStart,start-2),parse(temp));//发现后面还有东西if(end<input.length()-1){hashMap.putAll( parse(input.substring(end+1)));}}else{//没有发现[]keyValueArray=input.split(",");}for(String kv:keyValueArray){if("".equals(kv.trim()))continue;String[] array=kv.split("=");hashMap.put(array[0],array[1]);}return hashMap;}

解法2   当前字符串中所有普通键值对进行处理,将所有遇到的嵌套体内容递归处理

    HashMap<String, Object> parse(String input) {HashMap<String, Object> hashMap = new HashMap<>();char[] chars = input.toCharArray();int kvStart = 0;//记录当前键值对的开始字段int keyStart = 0;int start = -1;//[位置int end = -1;//]位置int stack = 0;//栈计数器for (int i = 0; i < chars.length; i++) {if (chars[i] == ',' && stack == 0) {//stack=0,表示不在嵌套结构内,作为普通的键值对解析String[] array = input.substring(kvStart, i).split("=");hashMap.put(array[0], array[1]);kvStart = i + 1;}else if(i==chars.length-1&&chars[i] != ']'){//尾部处理:如果是普通的字符串,尾部肯定不是],作为普通键值对String[] array = input.substring(kvStart, i+1).split("=");hashMap.put(array[0], array[1]);}else if (chars[i] == '[') {stack++;if (stack == 1) {//第一次嵌套开始start = i + 1;//嵌套内容起始位置for (int j = i; j > 0; j--) {if (chars[j] == ',') {keyStart = j + 1;//当前嵌套体的key起始字符位置break;}}}} else if (chars[i] == ']') { //第一次嵌套结束if (stack == 1) {end = i;hashMap.put(input.substring(keyStart, start - 2), parse(input.substring(start, end)));i++;//跳过逗号kvStart = i + 1;//下个键值对的起始位置}stack--;}}return hashMap;}

http://www.ahscrl.com/news/11982.html

相关文章:

  • 论坛网站如何备案百度首页纯净版
  • 关于党的网页设计seo文章代写平台
  • 做网络推广阿里巴巴还是网站好郑州网络推广公司排名
  • 国内看不到的中文新闻网站制作网站的公司有哪些
  • 团队建设思路和方案温州seo
  • 北京高端 网站建设站长之家的seo综合查询工具
  • 网页打不开但是有网什么原因如何解决优化建站
  • 农产品电商网站建设的总体目标兰州网络推广电话
  • 国外著名的网站设计公司谷歌关键词排名查询
  • 邯郸市住房和城乡建设网站抖音账号权重查询
  • 重庆企业网站建设联系电话磁力猫torrent kitty
  • 苏州360推广 网站建设在线一键建站系统
  • 淮北疫情最新消息今天发布会上海不限关键词优化
  • 成都那家做网站好?如何制作网站二维码
  • 莱州网站建设关键字排名优化网络托管微信代运营百度关键词搜索次数
  • 定制网站与模板网站一个企业该如何进行网络营销
  • 汽车网站名称网站运营主要做什么
  • 何做百度推广网站百度客服中心人工在线咨询
  • 上海公司黄页网站网络推广的方法有多选题
  • 开发国外优惠卷网站如何做百度上怎么发布信息啊
  • 网站后台管理系统管理员登录做网络推广需要多少钱
  • 微信公众平台开发源代码上海seo网站优化
  • 阿里云网站建设详细教程游戏推广员到底犯不犯法
  • 一个网站的预算网络推广的话术怎么说
  • 做网站公奇闻司郑州汉狮网络推广合作协议
  • 做网站需要交钱吗泰安做网站公司哪家比较好
  • 互联云主机seo关键词分类
  • 做的网站手机打不开怎么回事原版百度
  • 苏州运营推广网站建设世界球队最新排名榜
  • 如何做商城网站网页设计友情链接怎么做