js 替换

联动邱县

联动邱县

2016-02-19 09:00

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的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
代码:
代码如下:

script 
var strArr = "()()((()())"; 

function change(str) 

 var a=str.split(""); 
 var c=0; 
 var stack=[]; 
 var match={ 
 "(":")", 
 "{":"}", 
 "":"", 
 "" 
 } 
 for(var i=0;ia.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 

方案二:使用正则
作者:月影
代码:
代码如下:

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 
展开更多 50%)
分享

猜你喜欢

js 替换

Web开发
js 替换

用JS实现HTML标签替换效果

Web开发
用JS实现HTML标签替换效果

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Js&Vbs正则表达式替换重复的字符

Web开发
Js&Vbs正则表达式替换重复的字符

替换HTML代码

电脑网络
替换HTML代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

ubb js

Web开发
ubb js

JS Timing

Web开发
JS Timing

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10设置待机时关闭硬盘的方法

Win10设置待机时关闭硬盘的方法

javascript创建数组的最简代码

javascript创建数组的最简代码
下拉加载更多内容 ↓