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


Posted in Javascript onAugust 02, 2008

首先看看原来是怎么样做的:

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……

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

Javascript 相关文章推荐
js定时器怎么写?就是在特定时间执行某段程序
Oct 11 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
Mar 13 Javascript
JavaScript中cookie工具函数封装的示例代码
Oct 11 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JavaScript标准对象_动力节点Java学院整理
Jun 27 Javascript
微信小程序实现页面跳转传值的方法
Oct 12 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 02 Javascript
效率高的Javscript字符串替换函数的benchmark
Aug 02 #Javascript
javascript SocialHistory 检查访问者是否访问过某站点
Aug 02 #Javascript
js控制框架刷新
Aug 01 #Javascript
javascript之可拖动的iframe效果代码
Aug 01 #Javascript
javascript 单选框,多选框美化代码
Aug 01 #Javascript
javascript网页关键字高亮代码
Jul 30 #Javascript
用js生产批量批处理执行命令
Jul 28 #Javascript
You might like
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
浅析PHP开发规范
2018/02/05 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
jquery 循环显示div的示例代码
2013/10/18 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
使用纯javascript实现放大镜效果
2015/03/18 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
React Native 环境搭建的教程
2017/08/19 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
初试vue-cli使用HBuilderx打包app的坑
2019/07/17 Javascript
openlayers实现图标拖动获取坐标
2020/09/25 Javascript
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
浅析Python的Django框架中的Memcached
2015/07/23 Python
Python正则表达式使用范例分享
2016/12/04 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
使用npy转image图像并保存的实例
2020/07/01 Python
Matplotlib 绘制饼图解决文字重叠的方法
2020/07/24 Python
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
编辑硕士自荐信范文
2013/11/27 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
婚礼答谢词范文
2015/09/29 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers