时间:2021-05-26
问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的
作者: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>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用js替换除数字与逗号以外的所有字符复制代码代码如下:varstr="asdfk,asdf345345,345345";//替换除数字与逗号以外的所有字符。st
有时候用JS替换字符串时,replyText=replyText.replace("aa","");这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,
复制代码代码如下:/***替换字符串中所有*@paramobj原字符串*@paramstr1替换规则*@paramstr2替换成什么*@return替换后的字符
复制代码代码如下:通常情况下输入域当中的 替换不掉(源代码当中有 ,页面上显示为空格),如果想替换掉,可以用另外手段。增加一个隐藏域,值为&nb
复制代码代码如下:无标题文档functionaa(){s=form1.t1.value;s=s.replace(//n|/r/g,"");//加上g是全局替换,