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 相关文章推荐
eval与window.eval的差别分析
Mar 17 Javascript
JS按字节截取字符长度实例
Nov 20 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
javascript实现动态侧边栏代码
Feb 19 Javascript
javascript里绝对用的上的字符分割函数总结
Jul 31 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
jQuery隐藏和显示效果实现
Apr 06 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
Apr 17 jQuery
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
解决layui批量传值到后台操作时出现传值为空的问题
Sep 28 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 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语法(3)
2006/10/09 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
js发送短信倒计时的简单实现方法
2016/09/08 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
python装饰器decorator介绍
2014/11/21 Python
浅谈Python type的使用
2019/11/19 Python
Python新手学习函数默认参数设置
2020/06/03 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
python实现AdaBoost算法的示例
2020/10/03 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
幼儿园感恩节活动总结
2015/03/24 职场文书
初中英语教学随笔
2015/08/15 职场文书
2016年师德师风学习心得体会
2016/01/12 职场文书
《风筝》教学反思
2016/02/23 职场文书
vue中data改变后让视图同步更新的方法
2021/03/29 Vue.js
k-means & DBSCAN 总结
2021/04/27 Python