首页 > 技术文章 > 自己实现String.prototype.trim方法

gr07 2017-11-20 17:58 原文

今天呢 知乎看到一道题 说是网易面试题,要求自己写一个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//

正则真的犀利 高效很多

 

推荐阅读