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脚本编程解决考试分数统计问题
Oct 18 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
js将当前时间格式转换成时间搓(自写)
Sep 26 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
完善的jquery处理机制
Feb 21 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
JavaScript实现in-place思想的快速排序方法
Aug 07 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
vue 数组和对象不能直接赋值情况和解决方法(推荐)
Oct 25 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 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语法(5)
2006/10/09 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
Javascript 强制类型转换函数
2009/05/17 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
js获取当月最后一天实例代码
2013/11/19 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
浅析javascript的return语句
2015/12/15 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
python基础教程之基本内置数据类型介绍
2014/02/20 Python
github配置使用指南
2014/11/18 Python
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
python else语句在循环中的运用详解
2020/07/06 Python
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
物流业务员岗位职责
2014/02/08 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
大班下学期幼儿评语
2014/12/30 职场文书
会议新闻稿
2015/07/17 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
delete in子查询不走索引问题分析
2022/07/07 MySQL