六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 28|回复: 0

JS实现Trim()的最佳方式

[复制链接]

升级  39.33%

29

主题

29

主题

29

主题

秀才

Rank: 2

积分
109
 楼主| 发表于 2013-1-29 08:58:27 | 显示全部楼层 |阅读模式
javascript中没有用于移除字符串头尾空白的原生修剪方法,这是其最明显的疏漏之一。最常见的trim函数实现如下:
 
<script type="text/javascript">   function trim(str){ //删除左右两端的空格   return str.replace(/(^\s*)|(\s*$)/g, "");   }   function ltrim(str){ //删除左边的空格   return str.replace(/(^\s*)/g,"");   }   function rtrim(str){ //删除右边的空格   return str.replace(/(\s*$)/g,"");   }   </script>
然而这个表达式有个基于正则表达式的性能问题。对性能的影响来自于正则表达式的两个方面:一方面是指明有两个匹配模式的管道预算,另一方面则指明全局应用该模式的g标记,考虑这些可将正则表达式一分为二,稍微提高其速度:
 
function trim(str){    return str.replace(/^\s+/, "").replace(/\s+$/, "");}
还有一种性能比其它变形版更好的处理方式,在所有浏览器中都比之前版本执行速度更快
function trim(str){   str = str.replace(/^\s+/, "");   for(var i = str.length - 1;i >=0; i--){    if(/\S/.test(str.charAt(i))){       str = str.substring(0, i+1);       break;    }  }  return str;}Levithan的博客文章对此有完整分析:http://bolg.stevenlevithan/archives/faster-trim-javascript
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表