trim,我今天就要升级一下他

217 阅读1分钟

trim方法大家一定很熟悉吧,主要是用来去除字符串前面和后面的空格的,这个方法的出现让我们在实际操作的时候舒服了很多,下面举个例子。

let str = '  aaabbb   ';
console.log(str.trim()); //就会输出aaabbb,这个后面是没有空格的

那现在假如面试去,面试官让你手写一个trim,你会怎么写?

    funtion trim (str){
        return str.replace(/^(\s*)|(\s*)$/g, '');
    }

不用问这个正则哪里来的,建议通读阮老师带你了解什么是正则,但是今天的我不是正常的我,今天的我是摸鱼也不想摸的我,那如果自己实现应该怎么写了。

158EE661.png158F3859.jpg1591A7A3.jpg

function trim(str) { 
    let sIndex = -1; 
    for(let i = 0; i < str.length; i++) { 
        if(str.charAt(i) !== ' ') { sIndex = i; break; } 
    } if(sIndex === -1) { 
        //全空格 return ''; 
    } 
    let eIndex = str.length - 1; 
    for(let i = eIndex; i >= 0; i--) {
        if(str.charAt(i) !== ' ') { eIndex = i; break; } 
    } 
    return str.slice(sIndex, eIndex); 
 }

好,那现在如果面试官升级了要求,要求只去除中间的空格,不去除两边的空格,该怎么实现

159DD2DF.png159C40D6.jpg159CE284.png

大家先不要哭,稳住心态,即使面试官百般刁难我但是我仍然对面试官如初恋。既然硬不过那就默默承受。

    function c(str){
	return str.replace(/\s/g,"");
    }

No No No,这都把所有空格都干掉了,肯定没钻到面试官的心坎里,那这种不行那我们换一种方式。

let startIndex = -1; 
for(let i = 0; i < str.length; i++) { 
    if(str.charAt(i) !== ' ') { 
    startIndex = i; 
	break; 
    } 
} 
if(startIndex === -1) {} 
let endIndex = str.length - 1; 
for(let i = endIndex; i >= 0; i--) {
if(str.charAt(i) !== ' ') { 
	endIndex = i; break; 
    } 
}
let nct = str.slice(startIndex, endIndex)
nct = nct.replace(/\s/g,"")
let a = str.slice(0, startIndex)
let b = str.slice(endIndex, str.length)	 
let det = a + nct + b
return det

OK 虽然写的很随意但是我已经满足了

15E19E09.jpg

毕竟我现在要下班了,打工人永不能加班。今天就到此为止了,如果觉得有意思大家给点个赞吧。。。