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 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
jQuery maxlength文本字数限制插件
Apr 16 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
Oct 09 Javascript
angular.js+node.js实现下载图片处理详解
Mar 31 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
Aug 28 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
浅谈javascript中的prototype和__proto__的理解
Apr 07 Javascript
解决elementui表格操作列自适应列宽
Dec 28 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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
php带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
php格式化时间戳
2016/12/17 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
2016/05/23 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
vue.js框架实现表单排序和分页效果
2017/08/09 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
[02:01]2018完美盛典-开场舞《双子星》
2018/12/16 DOTA
Python微信库:itchat的用法详解
2017/08/14 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
django的ORM模型的实现原理
2019/03/04 Python
numpy.where() 用法详解
2019/05/27 Python
python加载自定义词典实例
2019/12/06 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
HTML5之多线程(Web Worker)
2019/01/02 HTML / CSS
英国最大的电子产品和家电零售企业:Currys PC World
2016/09/24 全球购物
马来西亚最好的婴儿商店:Motherhood
2017/09/14 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
项目经理岗位职责
2013/11/11 职场文书
一年级数学上册复习计划
2015/01/17 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
cf战队宣传语
2015/07/13 职场文书
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
SQL Server删除表中的重复数据
2022/05/25 SQL Server