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 相关文章推荐
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
js验证真实姓名与身份证号是否匹配
Oct 13 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
JavaScript的继承实现小结
May 07 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
Oct 12 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 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中的foreach函数
2013/08/31 PHP
php向js函数传参的几种方法
2014/08/10 PHP
smarty实现多级分类的方法
2014/12/05 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍
2012/01/10 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
javascript常用的方法分享
2015/07/01 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
JavaScript事件冒泡与事件捕获实例分析
2018/08/01 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
详解vue项目打包步骤
2019/03/29 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python单线程实现多个定时器示例
2014/03/30 Python
使用Python抓取模板之家的CSS模板
2015/03/16 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
报告会主持词
2014/04/02 职场文书
大二学习计划书范文
2014/04/27 职场文书
高中同学会活动方案
2014/08/14 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
青年人初次创业的“五不要”
2019/08/23 职场文书