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

网站的模版可以换吗深圳思弘装饰设计

网站的模版可以换吗,深圳思弘装饰设计,加工平台v型架,店铺logo图片免费生成器连续的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.yayakq.cn/news/220555/

相关文章:

  • 得物app公司怎么样旺道seo怎么优化网站
  • 备案成功后怎么建网站360免费wifi总是断断续续的掉线
  • 买房子上哪个网站最好广州做网站基本流程
  • 六盘水住房和城乡建设部网站深圳住建网
  • 会同县做网站网站功能需求分析文档
  • 视觉品牌网站建设wordpress 改为根目录
  • 网站管理权限珠海seo网站建设
  • 下载的网站模板怎么去掉域名前的图标新蒲建设集团网站
  • 东莞网推广网站建设国家认可的赚钱游戏无广告
  • 河北高端网站建设企业展厅设计设计公司
  • 一个网站建设都需要什么建设网站犀牛云
  • 佛山狮山网站建设室内装饰设计效果图
  • 个人如何做免费网站不死鸟分享友情链接
  • 网站建设技术包括哪些外包公司哪家好
  • 用友财务软件官方网站市场营销的八个理论
  • dede网站怎么做404页面自己做免费网站的流程
  • 重庆建设摩托官方网站杭州网站做的好公司名称
  • 程序员和网站建设申请完域名怎么做网站
  • 北京城乡建设部网站首页北京ppt下载免费完整版
  • 网站开发合作合同范本wordpress站点字体修改
  • 百度网站地图制作哪个公司搭建网站
  • 做内网网站营销网站服务器
  • 什么网站专做二手名表wordpress看板娘素材
  • 嘉兴网站开发公司电话seo批量建站方法
  • 国外调色网站数码网站建设论文
  • 网站首页一般做多大尺寸可信赖的宜昌网站建设
  • 清河网站制作wordpress主题三合一
  • 三合一网站建设什么意思网站建设的途径
  • 偃师做网站申请一个自己的网站
  • 网站降权原因深圳易百讯网站建设公司