Faster JavaScript Trim

摘要:Faster JavaScript Trim

處理字串習慣去除頭尾空白以防意外,但 js沒有內建 trim…得自己寫。

第一個看過的 trim是這種形式:

String.prototype.trim=function(){
    return this.replace(/^\s*|\s*$/g,'');
}
var s='  abcde ffe  ';
alert(s);
alert(s.trim());

blog.stevenlevithan.com/archives/faster-trim-javascript,這篇文章整理了其它方式,有興趣可以玩玩看,這裡僅做個人筆記~

return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
return str.replace(/^\s+/, '').replace(/\s+$/, '');
return str.substring(Math.max(str.search(/\S/), 0), str.search(/\S\s*$/) + 1);
return str.replace(/^\s+|\s+$/g, '');

str = str.match(/\S+(?:\s+\S+)*/);
return str ? str[0] : '';

return str.replace(/^\s*(\S*(\s+\S+)*)\s*$/, '$1');
return str.replace(/^\s*(\S*(?:\s+\S+)*)\s*$/, '$1');
return str.replace(/^\s*((?:[\S\s]*\S)?)\s*$/, '$1');
return str.replace(/^\s*([\S\s]*?)\s*$/, '$1');

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 : '';
}

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;
}

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);
}