1.正则实现
let str = ` hello world ! `;
let _trim = function () {
if (typeof this == "number") new Error("Invalid or unexpected token");
if (typeof this !== "string")
new Error("Cannot read property 'trim' of" + this);
let reg = /^\s*|\s*$/g;
return this.replace(reg, "");
};
String.prototype._trim = _trim;
2.substring 实现
//2、使用字符串方法实现:查找出第一个不是空格的字符和最后一个不是空格的字符,截取中间的内容即可
String.prototype._trim1 = function () {
let startIndex = Math.max(this.search(/\S/), 0);
let endIndex = this.search(/\S\s*$/) + 1;
return this.substring(startIndex, endIndex);
};
3.for循环实现
String.prototype._trim2 = function () {
var str = this,
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, len = str.length; i < len; 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 : "";
};