trim方法大家一定很熟悉吧,主要是用来去除字符串前面和后面的空格的,这个方法的出现让我们在实际操作的时候舒服了很多,下面举个例子。
let str = ' aaabbb ';
console.log(str.trim()); //就会输出aaabbb,这个后面是没有空格的
那现在假如面试去,面试官让你手写一个trim,你会怎么写?
funtion trim (str){
return str.replace(/^(\s*)|(\s*)$/g, '');
}
不用问这个正则哪里来的,建议通读阮老师带你了解什么是正则,但是今天的我不是正常的我,今天的我是摸鱼也不想摸的我,那如果自己实现应该怎么写了。
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);
}
好,那现在如果面试官升级了要求,要求只去除中间的空格,不去除两边的空格,该怎么实现
大家先不要哭,稳住心态,即使面试官百般刁难我但是我仍然对面试官如初恋。既然硬不过那就默默承受。
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 虽然写的很随意但是我已经满足了
毕竟我现在要下班了,打工人永不能加班。今天就到此为止了,如果觉得有意思大家给点个赞吧。。。