方法jQuery.trim( str ) 用于移除字符串开头和结尾的空白符。如果传入的参数是 null 或
undefined,则返回空字符串;如果传入的参数是对象,则先获取对象的字符串表示,然后移
除开头和结尾的空白符,并返回。相关代码如下所示:
43 // Check if a string has a non-whitespace character in it
44 rnotwhite = /\S/,
45
46 // Used for trimming whitespace
47 trimLeft = /^\s+/,
48 trimRight = /\s+$/,
91 trim = String.prototype.trim,
910 // IE doesn't match non-breaking spaces with \s
911 if ( rnotwhite.test( "\xA0" ) ) {
912 trimLeft = /^[\s\xA0]+/;
913 trimRight = /[\s\xA0]+$/;
914 }
668 // Use native String.trim function wherever possible
669 trim: trim ?
670 function( text ) {
671 return text == null ?
672 "" :
673 trim.call( text );
674 } :
675
676 // Otherwise use our own trimming functionality
677 function( text ) {
678 return text == null ?
679 "" :
680 text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
681 },
第47~4 8 行:正则trimLeft 用于匹配字符串开头的空白符;trimRight 用于匹配字符串结尾的空白符。
第911 ~914 行:在IE 9 以下的浏览器中,\s 不匹配不间断空格\xA0,需要为正则 trimLeft 和trimRight 加上“\xA0”。
第669 ~681 行:如果浏览器支持 String.prototype.trim() 则“借鸡生蛋”,String.prototype.trim() 是ECMAScript 5新增的String 原型方法;如果不支持,则先调用方法toString() 得到参数text 的字符串表示,然后调用方法replace() 把正则trimLeft 和trimRight 匹配到的空白符替换为空字符串。如果参数是null 或undefined,则返回空字符串。