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 相关文章推荐
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
TypeScript具有的几个不同特质
Apr 07 Javascript
JavaScript中的函数嵌套使用
Jun 04 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
Aug 26 Javascript
基于jquery animate操作css样式属性小结
Nov 27 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
原生JavaScript实现弹幕组件的示例代码
Oct 12 Javascript
webpack的移动端适配方案小结
Jul 25 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
js实现拖拽效果
2015/02/12 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
vue.js整合mint-ui里的轮播图实例代码
2017/12/27 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
利用信号如何监控Django模型对象字段值的变化详解
2017/11/27 Python
Python 判断奇数偶数的方法
2018/12/20 Python
如何通过python画loss曲线的方法
2019/06/26 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
Radley英国官网:英国莱德利小狗包
2019/03/21 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
竞聘上岗演讲稿范文
2014/01/10 职场文书
亲属关系公证书
2014/04/08 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
合伙购房协议样本
2014/10/06 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
社区活动总结范文
2015/05/07 职场文书
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers