Open shfshanyue opened 3 years ago
在正则表达式中,\s
指匹配一个空白字符,包括空格、制表符、换页符和换行符。等价于[ \f\n\r\t\v\u00a0\u1680\u180e\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
。
const trim = str => str.trim || str.replace(/^\s+|\s+$/g, '')
function trim (str = '') {
str = String(str)
let left = 0
let right = str.length - 1
while (/\s/.test(str[left]) && left < right) {
left += 1
}
while (/\s/.test(str[right]) && left < right) {
right -= 1
}
return str.slice(left, right + 1)
}
const trim = str => str.trim || str.replace(/^\s+|\s+$/g, '')
const trim = str => str.trim?.() || str.replace(/^\s+|\s+$/g, '')
function trim() {
let str = this;
let len = str.length;
if (len <= 0) {
return str;
}
let l = 0;
let r = str.length - 1;
while (l <= r) {
if (str[l] == " ") {
l++;
}
if (str[r] == " ") {
r--;
}
if (str[l] != " " && str[r] != " ") {
break;
}
}
let res = str.slice(l, r + 1);
return res;
}
String.prototype.trim = trim;
let s = " 123";
console.log(s.trim().length);
let s1 = "123 ";
console.log(s1.trim().length);
let s2 = " ";
console.log(s2.trim().length);
let s3 = "";
console.log(s3.trim().length);
实现一个 trim 函数,如同原生的
Array.prototype.trim
,以下有两个测试用例