leiyonglin 发表于 2013-1-29 08:58:27

JS实现Trim()的最佳方式

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
 
页: [1]
查看完整版本: JS实现Trim()的最佳方式