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判断字符是否是汉字的两种方法小结
Jan 03 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
Jquery注册事件实现方法
May 18 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
json格式的javascript对象用法分析
Jul 04 Javascript
JavaScript数组方法大全(推荐)
Jul 05 Javascript
文本框只能输入数字的js代码(含小数点)
Jul 10 Javascript
JS实现可视化文件上传
Sep 08 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
vue+element-ui表格封装tag标签使用插槽
Jun 18 Javascript
js实现简易拖拽的示例
Oct 26 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
JS设置随机出现2个数字的实例代码
2017/07/19 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
vue-cli下的vuex的简单Demo图解(实现加1减1操作)
2018/02/26 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
利用Python破解斗地主残局详解
2017/06/30 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
解决python文件双击运行秒退的问题
2019/06/24 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
python 实现生成均匀分布的点
2019/12/05 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
酒吧创业计划书
2014/01/18 职场文书
应届毕业生自荐信
2014/05/28 职场文书
员工安全生产责任书
2014/07/22 职场文书
安全施工责任书
2014/08/25 职场文书
停车位租赁协议书
2014/09/24 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
nginx lua 操作 mysql
2022/05/15 Servers