javascript之更有效率的字符串替换

 更新时间:2008年08月02日 01:42:06   作者:  
今天研究了一下JS比较高级的正则表达式方法,发现一个我认为比原来的方法更有效率的字符串替换方法。
首先看看原来是怎么样做的:
复制代码 代码如下:

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; 

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

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

[code]
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#我也并不是属于那种泛泛而谈的类型,只是我觉得假如可以用一门语言从后写到前,包括他的周边项目,那将是一件非常惬意的事情。从此再也不会在多种语言中转来转去了。
来看看WPF/E(Windows Presentation Foundation/Everywhere)的威力:
2005年的PDC大会上,微软介绍了一项名为WPF/E(Windows Presentation Foundation/Everywhere)的技术,在自己的MIX'06会议上又展示了新的特色。WPF/E依赖XAML和JavaScript来制作网页,它也带有跨平台工具,支持CLR、.NET、C#、VB.NET等的代码,实质上,它是一个与目前属于Adobe的Flash很类似的工具。

微软的程序员Mike Harsh曾经说过:“没错,我们正将C#带入Mac.”

虽然被大家认为是“Flash杀手”,不过微软的目标更远大一点:让用户不仅在桌面系统上使用微软的软件和技术,他们同样要占领网络和移动设备。

“实质上,WPF/E根本不是一个照搬的作品,它为开发者、设计师、技术员提供了一个综合性的开发设计平台。”开发者Joe Stegman说,“它能良好地与微软的其他产品结合,这一点是Flash平台望尘莫及的。”Stegman表示他们一直在很努力地进行WPF/E开发工作,已经发行了好几个内部版本,用户体验版在不久之后也会放出。

虽然现在Flash风光无限,有人可能认为微软的WPF/E没法超越Flash,不过想想多年以前网景的Netscape……

图为在浏览器中演示的矢量图形,可以随意对图形进行缩放、旋转

相关文章

  • LayUi使用switch开关,动态的去控制它是否被启用的方法

    LayUi使用switch开关,动态的去控制它是否被启用的方法

    今天小编就为大家分享一篇LayUi使用switch开关,动态的去控制它是否被启用的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript动态添加列的方法

    JavaScript动态添加列的方法

    这篇文章主要介绍了JavaScript动态添加列的方法,实例分析了javascript操作table表单的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 微信小程序实现canvas分享朋友圈海报

    微信小程序实现canvas分享朋友圈海报

    这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • 微信小程序按钮巧妙用法

    微信小程序按钮巧妙用法

    这篇文章主要介绍了微信小程序按钮巧妙用法,按钮组件功能比 HTML 中的 button 按钮丰富,通过 open-type 属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等),需要的朋友可以参考下
    2022-12-12
  • layui 数据表格复选框实现单选功能的例子

    layui 数据表格复选框实现单选功能的例子

    今天小编就为大家分享一篇layui 数据表格复选框实现单选功能的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】

    JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】

    这篇文章主要介绍了JS表单验证插件之数据与逻辑分离操作,结合实例形式分析了JavaScript基于策略模式实现数据与逻辑分离的表单验证插件相关原理、操作技巧及注意事项,需要的朋友可以参考下
    2020-05-05
  • 微信小程序中实现微信支付完整步骤

    微信小程序中实现微信支付完整步骤

    这篇文章主要给大家介绍了关于微信小程序中实现微信支付的相关资料,微信小程序支付是一种常见的支付方式,实现起来相对较为复杂,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 如何防止JavaScript自动插入分号

    如何防止JavaScript自动插入分号

    JavaScript语言有一个机制:在解析时,能够在一句话后面自动插入一个分号,用来修改语句末尾遗漏的分号分隔符。然而,由于这个自动插入的分号与JavaScript语言的另一个机制发生了冲突,即所有空格符都被忽略,因此程序可以利用空格格式化代码
    2015-11-11
  • JavaScript ECMAScript 6(ES2015~ES2022)所有新特性总结

    JavaScript ECMAScript 6(ES2015~ES2022)所有新特性总结

    这篇文章主要介绍了JavaScript ECMAScript 6(ES2015~ES2022)所有新特性总结,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • js动态添加表格逐行添加、删除、遍历取值的实例代码

    js动态添加表格逐行添加、删除、遍历取值的实例代码

    最近做项目遇到这样的需求,要求表格添加一行,表格删除一行,表格遍历取值等。下面小编给大家带来了js动态添加表格逐行添加、删除、遍历取值的实例代码,需要的朋友参考下
    2018-01-01

最新评论