自己实现String.prototype.trim方法

时间:2024-07-21 11:03:20

今天呢 知乎看到一道题 说是网易面试题,要求自己写一个trim()方法,

实现 var str = "   a   sd  "; 去掉字符串两端的空格。

直接上码

  var str = "   a  sd  ";

  function trim (st) {
// 先把字符串分割成数组
var arr = st.split("");
// 从前面删除空格
for (let i = 0; i < arr.length; i++) {
// 如果数组元素是空格则删除
if (arr[i] === " ") {
arr.shift();
/*console.log(arr.length, i)*/
// 如果当前元素的下一项不是空格退出循环
if (arr[i+1] !== " ") {
break;
} }
}
// 后前面删除空格
for (let i = arr.length; i >= 0; i--) {
// 如果数组元素是空格则删除
if (arr[i-1] === " ") {
arr.pop();
// 如果当前元素的前一项不是空格退出循环
if (arr[i-2] !== " ") {
break;
}
}
}
arr = arr.join("");
/*console.log(arr);*/
return arr;
}
var a = trim(str);
console.log(a); //a sd//

原理注释写的很清楚

然后我写完后满心欢喜的看了下答案。。。。。结果人家就是一句正则而已

上原答案

  var str = "   a  sd  ";
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
var b = str.trim();
console.log(b);//a sd//

正则真的犀利 高效很多