1. return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
2. return str.replace(/^\s+/, '').replace(/\s+$/, '');
3. return str.substring(Math.max(str.search(/\S/), 0), str.search(/\S\s*$/) + 1);
4. return str.replace(/^\s+|\s+$/g, '');
5. str = str.match(/\S+(?:\s+\S+)*/); return str ? str[0] : '';
6. return str.replace(/^\s*(\S*(\s+\S+)*)\s*$/, '$1');
7. return str.replace(/^\s*(\S*(?:\s+\S+)*)\s*$/, '$1');
8. return str.replace(/^\s*((?:[\S\s]*\S)?)\s*$/, '$1');
9. return str.replace(/^\s*([\S\s]*?)\s*$/, '$1');
10. function trim10 (str) {
var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
for (var i = 0; i < str.length; i++) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(i);
break;
}
}
for (i = str.length - 1; i >= 0; i--) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(0, i + 1);
break;
}
}
return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
11. function trim11 (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;
}| Method | Firefox 2 | IE 6 |
|---|---|---|
| trim1 | 15ms | < 0.5ms |
| trim2 | 31ms | < 0.5ms |
| trim3 | 46ms | 31ms |
| trim4 | 47ms | 46ms |
| trim5 | 156ms | 1656ms |
| trim6 | 172ms | 2406ms |
| trim7 | 172ms | 1640ms |
| trim8 | 281ms | < 0.5ms |
| trim9 | 125ms | 78ms |
| trim10 | < 0.5ms | < 0.5ms |
| trim11 | < 0.5ms | < 0.5ms |
!错误! return str.replace(/^\s*([\S\s]*)\b\s*$/, '$1');最后,在各个浏览器长字符串表现都很好的trim11,作者还提供了最终的优化版trim12 function trim12 (str) {
var str = str.replace(/^\s\s*/, ''),
ws = /\s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
}