手机
js 替换
摘要:问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的作者:infinte要求:[1]支持任意的“括...

问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的

作者: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>

varstrArr="()()((()())";

functionchange(str)

{

vara=str.split("");

varc=0;

varstack=[];

varmatch={

"(":")",

"{":"}",

"<":">",

"【":"】"

}

for(vari=0;i<a.length;i++)

if(match[a[i]]){

stack.push([a[i],i]);

}

elseif(a[i]==")"||a[i]=="}"||a[i]==">"||a[i]=="】"){

if(!stack.length)continue;

vartmp=stack.pop();

if(match[tmp[0]]==a[i])a[i]="]",a[tmp[1]]="[";

elsestack.push(tmp);

}

returna.join("");

}

alert(change(strArr));

</script>

方案二:使用正则

作者:月影

代码:

复制代码 代码如下:

<script>

varstrArr="()()((()())";

varo=strArr;

varr=o;

do{

o=r;

r=o.replace(/(([^()]*))/g,function(s,a){return'['+a+']'});

}while(o!=r);

alert(r);

</script>

【js 替换】相关文章:

javaScript(JS)替换节点实现思路介绍

Node.js读写文件之批量替换图片的实现方法

JS使用正则表达式过滤多个词语并替换为相同长度星号的方法

js替换字符串的所有示例代码

js使用正则实现ReplaceAll全部替换的方法

Webpack 实现 Node.js 代码热替换

JS替换字符串中字符即替换全部而不是第一个

JS选项卡动态替换banner图片路径的方法

js正则表达式replace替换变量方法

用JS实现HTML标签替换效果

精品推荐
分类导航