js 替换
问题:就是将()()()((())())换成[][][[[]][]]的那种了,处理括弧配对用的
作者: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]右括号比左括号多,保留多余的括号,即:(()()(()()))))) → [[][][[][]]])))
<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>
相关推荐
-
使用正则替换变量
我们使用 str.replace(/s/g,"world") 可以将字符 "s" 替换成 "world" 如果要替换一个变量呢? s = "abc" 怎样将全部 abc 替换成 "world" ? 复制代码 代码如下: str.replace(new RegExp(s,"g"),"world") s 中不要包含正则元字符 否则会产生错误
-
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
1.<script language="javascript"> var str = "ajfhslajd and"; //在此我想将字母a替换成字母A alert(str.replace("a","A")); </script> 结果:是只有替换了字符串的首字符a 这不是我要的结果 看↓ 2.replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换! <scri
-
javascript replace()正则替换实现代码
复制代码 代码如下: var data = "123123,213,<,12312,>,312,3,cat,dsfsdfs,"; alert(func(data)); function func(str) { var reg = /<|>/g; str = str.replace(reg,function($1){ if($1=='<'){ return '<'; }else{ return '>'; } }); return str; } 很
-
js 替换功能函数,用正则表达式解决,js的全部替换
alert("abacacf".replace('a','9')); alert("abacacf".replace(/a/g,'9')); 第一个运行的结果 9bacaf 这个只是替换了第一个 第二个运行的结果 9b9c9f 这个能实现js的全部替换功能 其实第二个的意思就是用正则表达式实现全局的替换 g 代表 gobal 另附:带有特殊符号的全局替换 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HT
-
js replace() 文本替换你所不知的
复制代码 代码如下: //把word-word转化为wordWord function camelize(s){ return s.replace(/-(\w)/g, function(strMatch, p1){ return p1.toUpperCas(); }); } 这里应用到了文本替换函数replace,他的一般语法估计大家都已经耳熟能详了,现在介绍一下当他的第二个参数为函数时的情形. 今天我在群里发这个函数的时候,有个人反映很快,说上面的那个正则写错了"/-(\w)/g",
-
javascript 正则替换 replace(regExp, function)用法
复制代码 代码如下: function fn() { for(var i = 0;i < arguments.length;i++){ alert("第"+(i+1)+"个参数的值:"+arguments[i]); } } var str = '<div id="{wo}" >{ni}</div>'; str.replace(/\{([a-z]+)\}/ig, fn); 根据多次测试由输出结果可以得出fn中: 第一个
-
JS替换字符串中字符即替换全部而不是第一个
有时候用JS替换字符串时,replyText= replyText.replace("aa",""); 这样只能替换掉字符串中第一个aa,有时候需要替换全部的aa,这种方法就不能使用了.. 可以用如下方法做参考: 复制代码 代码如下: function del_html_tags(str,reallyDo,replaceWith) { var e=new RegExp(reallyDo,"g"); words = str.replace(e, r
-
用js替换除数字与逗号以外的所有字符的代码
用js替换除数字与逗号以外的所有字符 复制代码 代码如下: <script language="javascript"> var str="asdfk,asdf345345,345345"; //替换除数字与逗号以外的所有字符.str=str.replace(/[^0-9,]*/g,""); //去掉第一个逗号if (str.substr(0,1)==',') str=str.substr(1);//去掉第二个逗号var reg=/
-
js替换字符串中所有指定的字符(实现代码)
第一次发现JavaScript中replace() 方法如果直接用str.replace("-","!") 只会替换第一个匹配的字符. 而str.replace(/\-/g,"!")则可以全部替换掉匹配的字符(g为全局标志). replace() The replace() method returns the string that results when you replace text matching its first argumen
-
JS替换字符串中指定位置的字符(多种方法)
假设有一个字符串,可能'Good Morning'也可能是'Hello World',我想将第五个字符,替换成'-'. 因为字符串虽然可以像数组那样获取某一位置字符'Hello World'[4],但是不能像数组那样直接修改某一位置的字符'Hello World'[4] = '-',这样是行不通的,但是可以把它切分成数组,修改某一位置的值,然后在合并回来. 方法1: const replaceStr1 = (str, index, char) => { const strAry = str.sp
-
JS 替换和时间插件的结合使用方法
var d = '2013-07-21'; var nd = d.replace(new RegExp('-', 'g'), ','); //替换全部 document.write(nd); document.write(''); var a = 'phper_yang'; var aa = a.replace('_','.');//替换一次 document.write(aa); [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 复制代码 代码如下: // 日期 $('.dat
-
JS替换字符串中空格方法
复制代码 代码如下: <input type=hidden name="space" value=" "> 通常情况下输入域当中的 替换不掉(源代码当中有 ,页面上显示为空格),如果想替换掉,可以用另外手段. 增加一个隐藏域,值为 ,然后再替换 复制代码 代码如下: var sp=document.getElementById("space").value; strData = document.all
-
JS替换文本域内的回车示例
复制代码 代码如下: <html> <head> <title>无标题文档</title> <script type="text/javascript"> function aa() { s=form1.t1.value; s=s.replace(//n|/r/g,"");// 加上g是全局替换,不加只替换第一个 是回车.是换行符 form1.t1.value=s; } </script> &l
-
jquery库文件略庞大用纯js替换jquery的方法
jquery库文件略庞大,在某些情况下,需要尽量减少加载的文件(文件大小),需要用纯js来编写效果 $('#layer') document.getElementById('layer') $('#layer span') var layer = document.getElementById('layer'); var span = layer.getElementsByTagName('span'); $('#inner').parent() document.getElementById(
-
javaScript(JS)替换节点实现思路介绍
复制代码 代码如下: <title></title> <script type="text/javascript"> function createNode() { var pNode = document.createElement('p'); var tNode = document.createTextNode('烟花三月下杨州'); pNode.appendChild(tNode); document.body.appendChild(pNo
随机推荐
- VMware Workstation12安装Ubuntu和VMware Tools教程
- 详解vue 中使用 AJAX获取数据的方法
- 详解git中配置的.gitignore不生效的解决办法
- Oracle两张表关联批量更新其中一张表的数据
- 浅谈Python生成器generator之next和send的运行流程(详解)
- C#中的尾递归与Continuation详解
- thinkphp如何获取客户端IP
- C#实现主窗体最小化后出现悬浮框及双击悬浮框恢复原窗体的方法
- 基于Jquery的开发个代阴影的对话框效果代码
- JS获取当前网页大小以及屏幕分辨率等
- js动态设置鼠标事件示例代码
- Ubuntu16.04 静态IP地址设置(NAT方式)
- C#如何调用原生C++ COM对象详解
- java中文分词之正向最大匹配法实例代码
- .Net判断一个对象是否为数值类型实例
- richtextbox控件插入链接代码分享
- Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
- PHP set_error_handler()函数使用详解(示例)
- Android中使用TextView实现高仿京东淘宝各种倒计时效果
- 局域网中工作组和域之间的差别