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编写COM组件的步骤
Mar 17 Javascript
js实现简单div拖拽功能实例
May 12 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
Sep 04 Javascript
深入分析jsonp协议原理
Sep 26 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 Javascript
js实现鼠标单击Tab表单切换效果
May 16 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
Aug 08 Javascript
jQuery zTree插件使用简单教程
Aug 16 jQuery
vue+element-ui+axios实现图片上传
Aug 20 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
PHP 数据结构 算法 三元组 Triplet
2011/07/02 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
php模拟登陆的实现方法分析
2015/01/09 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
插件:检测javascript的内存泄漏
2007/03/04 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
2010/06/11 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
jQuery超简单选项卡完整实例
2015/09/26 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
js中switch语句的学习笔记
2020/03/25 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
简单说说tomcat的配置
2013/05/28 面试题
党课学习思想汇报
2014/01/02 职场文书
环保口号大全
2014/06/12 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL
Python使用openpyxl模块处理Excel文件
2022/06/05 Python