Javascript中各种trim的实现详细解析


Posted in Javascript onDecember 10, 2013

这是lgzx公司的一道面试题,要求给js的String添加一个方法,去除字符串两旁的空白字符(包括空格、制表符、换页符等)。

String.prototype.trim = function() { 
    //return this.replace(/[(^\s+)(\s+$)]/g,"");//??炎址??虚g的空白符也去掉 
    //return this.replace(/^\s+|\s+$/g,""); // 
    return this.replace(/^\s+/g,"").replace(/\s+$/g,""); 
}

JQuery1.4.2,Mootools 使用 
function trim1(str){ 
    return str.replace(/^(\s|\xA0)+|(\s|\xA0)+$/g, ''); 
}

jQuery1.4.3,Prototype 使用,该方式去掉g以稍稍提高性能 在小规模的处理字符串时性能较好
function trim2(str){ 
    return str.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,''); 
}

Steven Levithan 在进行性能测试后提出了在JS中执行速度最快的裁剪字符串方式,在处理长字符串时性能较好
function trim3(str){ 
    str = str.replace(/^(\s|\u00A0)+/,''); 
    for(var i=str.length-1; i>=0; i--){ 
        if(/\S/.test(str.charAt(i))){ 
            str = str.substring(0, i+1); 
            break; 
        } 
    } 
    return str; 
}

最后需要提到的是 ECMA-262(V5) 中给String添加了原生的trim方法(15.5.4.20)。此外Molliza Gecko 1.9.1引擎中还给String添加了trimLeft ,trimRight 方法。
Javascript 相关文章推荐
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
带左右箭头图片轮播的JS代码
Dec 18 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
Feb 26 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
Electron 打包问题:electron-builder 下载各种依赖出错(推荐)
Jul 09 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
js中实现继承的五种方法
Jan 25 Javascript
深入理解Javascript动态方法调用与参数修改的问题
Dec 10 #Javascript
ExtJS的拖拽效果示例
Dec 09 #Javascript
用Javascript获取页面元素的具体位置
Dec 09 #Javascript
jQuery取得select选择的文本与值的示例
Dec 09 #Javascript
JavaScript—window对象使用示例
Dec 09 #Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
Dec 09 #Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 #Javascript
You might like
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
Yii Framework框架获取分类下面的所有子类方法
2014/06/20 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
laravel框架使用极光推送消息操作示例
2020/02/15 PHP
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
简单实现js浮动框
2016/12/13 Javascript
jQuery Easyui datagrid连续发送两次请求问题
2016/12/13 Javascript
Node.js 中exports 和 module.exports 的区别
2017/03/14 Javascript
Vue.js弹出模态框组件开发的示例代码
2017/07/26 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
详解Vue中watch对象内属性的方法
2019/02/01 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python解决方案:WindowsError: [Error 2]
2016/08/28 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
FC-Moto丹麦:欧洲最大的摩托车服装和头盔商店之一
2019/08/20 全球购物
本科生自荐信
2014/06/18 职场文书
环保项目建议书
2014/08/26 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python