今天呢 知乎看到一道題 說是網易面試題,要求自己寫一個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//
正則真的犀利 高效很多
