js 替换


Posted in Javascript onFebruary 19, 2008

问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的
作者: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;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> 

方案二:使用正则
作者:月影
代码:
<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> 
Javascript 相关文章推荐
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
Node.js获取前端ajax提交的request信息
Feb 20 Javascript
详解vue-router2.0动态路由获取参数
Jun 14 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
使用Angular CLI生成路由的方法
Mar 24 Javascript
React Form组件的实现封装杂谈
May 07 Javascript
解决layui中table异步数据请求不支持自定义返回数据格式的问题
Aug 19 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
Vue 刷新当前路由的实现代码
Sep 26 Javascript
javascript replace方法与正则表达式
Feb 19 #Javascript
window.addeventjs事件驱动函数集合addEvent等
Feb 19 #Javascript
setAttribute 与 class冲突解决
Feb 17 #Javascript
setInterval 和 setTimeout会产生内存溢出
Feb 15 #Javascript
一个js封装的不错的选项卡效果代码
Feb 15 #Javascript
ImageFlow可鼠标控制图片滚动
Jan 30 #Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
Jan 30 #Javascript
You might like
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
用PHP实现多服务器共享SESSION数据的方法
2007/03/16 PHP
php 信息采集程序代码
2009/03/17 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
PHP中filter函数校验数据的方法详解
2015/07/31 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
jquery中validate与form插件提交的方式小结
2016/03/26 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
ES6 javascript中class类的get与set用法实例分析
2017/10/30 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
[58:12]Ti4第二日主赛事败者组 LGD vs iG 3
2014/07/21 DOTA
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python脚本实现12306火车票查询系统
2016/09/30 Python
不可错过的十本Python好书
2017/07/06 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
使用python批量化音乐文件格式转换的实例
2019/01/09 Python
python 堆和优先队列的使用详解
2019/03/05 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
运动会800米加油稿
2014/02/22 职场文书
大班上学期幼儿评语
2014/04/30 职场文书
开工仪式策划方案
2014/05/23 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
微信小程序用户授权最佳实践指南
2021/05/08 Javascript