源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

js 替换

  • 时间:2020-05-06 22:53 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js 替换
问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的 作者:infinte 要求: [1]支持任意的“括弧”,也就是可以用【】<>{}()……或者类似XML的:<a></a>、[cc][cc:over]、{ttt] [ttt} [2]严格按照层次匹配,就是(a)b(c(d)e)换成[a]b[c[d]e]而非[a]b[c(d]e) (结束太早了) [3]左括号比右括号多时,保留多余的括号,即:()()((()()) → [][]([[][]] [4]右括号比左括号多,保留多余的括号,即:(()()(()()))))) → [[][][[][]]]))) 方案一:使用堆栈 作者:winter 代码:
[u]复制代码[/u] 代码如下:
<script>  var strArr = "()()((()())";  function change(str)  {   var a=str.split("");   var c=0;   var stack=[];   var match={   "(":")",   "{":"}",   "<":">",   "【":"】"   }   for(var i=0;i<a.length;i++)   if(match[a[i]]){   stack.push([a[i],i]);   }   else if(a[i]==")"||a[i]=="}"||a[i]==">"||a[i]=="】"){   if(!stack.length)continue;   var tmp=stack.pop();   if(match[tmp[0]]==a[i])a[i]="]",a[tmp[1]]="[";   else stack.push(tmp);   }   return a.join("") ;  }  alert(change(strArr));  </script> 
方案二:使用正则 作者:月影 代码:
[u]复制代码[/u] 代码如下:
<script>  var strArr = "()()((()())";  var o = strArr;  var r = o;  do{   o = r;   r = o.replace(/\(([^()]*)\)/g,function(s,a){return '['+a+']'});  }while(o!=r);  alert(r);  </script> 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部