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 相关文章推荐
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 Javascript
[原创]保存的js无法执行的解决办法
Feb 25 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
Jun 13 Javascript
用jmSlip编写移动端顶部日历选择控件
Oct 24 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
bootstrap使用validate实现简单校验功能
Dec 02 Javascript
JS中Safari浏览器中的Date
Jul 17 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
3分钟了解vue数据劫持的原理实现
May 01 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 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 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
2010/05/10 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
js post提交调用方法
2014/02/12 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
2017/07/25 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python Socket编程入门教程
2014/07/11 Python
Python中处理字符串的相关的len()方法的使用简介
2015/05/19 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
django-filter和普通查询的例子
2019/08/12 Python
深入了解python中元类的相关知识
2019/08/29 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
学生安全承诺书
2014/05/22 职场文书
应届大学生自荐书
2014/06/17 职场文书
怎样写离婚协议书
2014/09/10 职场文书
领导班子专题民主生活会情况想汇报
2014/09/30 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
女儿满月酒致辞
2015/07/29 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
如何用python反转图片,视频
2021/04/24 Python
python爬虫请求库httpx和parsel解析库的使用测评
2021/05/10 Python
七个非常实用的Python工具包总结
2021/06/15 Python
修改并编译golang源码的操作步骤
2021/07/25 Golang
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL