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 相关文章推荐
这段js代码得节约你多少时间
Dec 20 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
Mar 14 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
jquery中focus()函数实现当对象获得焦点后自动把光标移到内容最后
Sep 29 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
JS中递归函数
Jun 17 Javascript
jquery仿京东商品放大浏览页面
Jun 06 jQuery
js防刷新的倒计时代码 js倒计时代码
Sep 06 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
Mar 06 Javascript
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
Nov 20 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP中的正规表达式(二)
2006/10/09 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
php基于PDO实现功能强大的MYSQL封装类实例
2017/02/27 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
js获取ip和地区
2017/03/10 Javascript
Vue异步加载about组件
2017/10/31 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
Python中字典和集合学习小结
2017/07/07 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
厨师岗位职责
2013/11/12 职场文书
高中生评语大全
2014/04/25 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
工程催款通知书
2015/04/17 职场文书
高中生社会实践心得体会
2016/01/14 职场文书