用JavaScript实现全局替换,解决$等特殊符号的难题

网络编程 2021-07-05 10:07www.168986.cn编程入门
感谢海浪提供的正则,原贴请参见
http://.ie./bbs/view/106503.html

因为要做个模板替换的东西,里面的变量采用${MyName}这种格式的命名方式。在进行全局替换时,遇到两个难点
1.要么无法替换掉$等特殊符号
2.要么无法忽略大小写

在海浪有帮助下,终于有了最佳实现方式)

最佳实现方式
代码如下:
<script type="text/javascript"> 
String.prototype.replaceAll = stringReplaceAll; 

function stringReplaceAll(AFindText,ARepText){ 
 var raRegExp = new RegExp(AFindText.replace(/([\(\)\[\]\{\}\^\$\+\-\\?\.\"\'\|\/\\])/g,"\\$1"),"ig"); 
 return this.replace(raRegExp,ARepText); 


var ssString=".lei.;.CnLei.;.lei."; 
alert(ssString.replaceAll("lei","ie")); 

ssString=".${MyName}.;.${MyName}.;.${MyName}."; 
alert(ssString.replaceAll("${MyName}","lei")); 

ssString=".{MyName}.;.{MyName}.;.{MyName}."; 
alert(ssString.replaceAll("{MyName}","lei")); 
</script> 

以前使用方法一(可实现忽略大小,但无法实现特殊符号的替换)
代码如下:
<script type="text/javascript"> 
String.prototype.replaceString = stringReplaceAll; 

function stringReplaceAll(AFindText,ARepText){ 
 var raRegExp = new RegExp(AFindText,"ig"); 
 return this.replace(raRegExp,ARepText); 


var ssString=".lei.;.CnLei.;.lei."; 
alert(ssString.replaceString("lei","ie")); 

ssString=".${MyName}.;.${MyName}.;.${MyName}."; 
alert(ssString.replaceString("${MyName}","lei")); 

ssString=".{MyName}.;.{MyName}.;.{MyName}."; 
alert(ssString.replaceString("{MyName}","lei")); 
</script> 
以前使用的方式二(可替换特殊符号$等,但无法忽略大小写)
代码如下:
<script type="text/javascript"> 
String.prototype.replaceString = function(s1,s2){ 
this.str=this; 
if(s1.length==0)return this.str; 
 var idx=this.str.indexOf(s1); 
 while(idx>=0){ 
 this.str=this.str.substring(0, idx)+s2+this.str.substr(idx+s1.length); 
 idx=this.str.indexOf(s1); 
 } 
 return this.str; 

var ssString=".lei.;.CnLei.;.lei."; 
alert(ssString.replaceString("lei","ie")); 

ssString=".${MyName}.;.${MyName}.;.${MyName}."; 
alert(ssString.replaceString("${MyName}","lei")); 

ssString=".{MyName}.;.{MyName}.;.{MyName}."; 
alert(ssString.replaceString("{MyName}","lei")); 
</script>

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by