注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

.

.

 
 
 

日志

 
 

更有效率的JS字符串替换  

2010-06-24 12:17:36|  分类: 网页代码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
js 替换字符串中的指定字符 实现

<script language="javascript">
function replace(str,a,b)
    {
     var i;
     var s2 = str;
    
     while(s2.indexOf(a)>0)
     {
     i = s2.indexOf(a);
     s2 = s2.substring(0, i) + b
     + s2.substring(i + 2, s2.length);
     }
     return s2;
    }
</script>




发现一个我认为比原来的方法更有效率的字符串替换方法。
首先看看原来是怎么样做的:


程序代码

function toTXT(str){
     str = str.replace(/\&/g, "& amp;");
     str = str.replace(/\>/g, "& gt;");
     str = str.replace(/\</g, "& lt;");
     str = str.replace(/\"/g, "& quot;");
     str = str.replace(/\'/g, "& #39;");
     return str;
}



分析:上面的方法是用来替换过滤字符串的HTML代码的,一直认为这样做很没效率,因为要把这个字符串进行5次全文匹配(不是数据库中的全文检索),有没方法只使用一次全文匹配,就可以替换掉不同的字符串为不同的结果呢?

呵呵,终于找到了下面的这个方法:


程序代码

function toTXT(str){
     var RexStr = /\<|\>|\"|\'|\&/g
     str = str.replace(RexStr,
         function(MatchStr){
             switch(MatchStr){
                 case "<":
                     return "& lt;";
                     break;
                 case ">":
                     return "& gt;";
                     break;
                 case "\"":
                     return "& quot;";
                     break;
                 case "'":
                     return "& #39;";
                     break;
                 case "&":
                     return "& amp;";
                     break;
                 default :
                     break;
             }
         }
     )
     return str;
}



看上去要比第一个方法要复杂一些,写的代码也要多一点点,不过呢,只用一次,就可以替换整个字符串里面的匹配字符为不同的结果,非常有效率的。而且代码看上去也很直观,修改方便。

更重要的是第一个方法假如要替换"&"一定要放在最前面,而后面的方面完全不用担心这个问题。

JavaScript还有很多鲜为人知的用法,而且很多思想在别的语言里面都没有。就算JAVA再怎么强大,他的正则表达式却在JDK1.4里面才引入,落后了很多。不过我没说JAVA就一定比JS差只类的话啊。

JS的应用范围绝对不止HTML,还有很多其他的方面都在使用他,比如WebFT(测试网站的工具),.NET等,并且在即将发布,传说中“FLASH杀手”——WPF/E(Windows Presentation Foundation/Everywhere)出现后,JS的应用范围更加宽广。

很多人都不屑于JS,认为他很低级,连基本的对象类型都没有。NO,错了,在.NET里面,也就是Jscript.Net中,微软将JS的版本提升为8.0,基本上他已经与C#没有任何差别,所有程序语言该有的他都具备了。

说一个笑话,我写.net和ASP就用的Jscript,但是VB和C#我也并不是属于那种泛泛而谈的类型,只是我觉得假如可以用一门语言从后写到前,包括他的周边项目,那将是一件非常惬意的事情。从此再也不会在多种语言中转来转去了。
  评论这张
 
阅读(4109)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017