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 相关文章推荐
JavaScript this调用规则说明
Mar 08 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
javascript几个易错点记录
Nov 26 Javascript
node.js中的fs.ftruncate方法使用说明
Dec 15 Javascript
JavaScript中自定义事件用法分析
Dec 23 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
jQuery实现简单的网页换肤效果示例
Sep 18 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
JavaScript中一些特殊的字符运算
Aug 17 Javascript
浅谈Node Inspector 代理实现
Oct 19 Javascript
Node与Python 双向通信的实现代码
Jul 16 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
php中文件上传的安全问题
2006/10/09 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
PHP实现验证码校验功能
2017/11/16 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
jQuery焦点图插件SaySlide
2015/12/21 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
Python实现一个简单的验证码程序
2017/11/03 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
职工运动会邀请函
2014/01/19 职场文书
团日活动策划书
2014/02/01 职场文书
高三政治教学反思
2014/02/06 职场文书
优秀员工评语
2014/02/10 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
公务员个人考察材料
2014/12/23 职场文书
稽核岗位职责范本
2015/04/13 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
《灰雀》教学反思
2016/02/19 职场文书
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers