自己實現String.prototype.trim方法


今天呢 知乎看到一道題 說是網易面試題,要求自己寫一個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//

正則真的犀利 高效很多

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM