最近在面试中多次被问到一个手撕代码的题目,就是让你手写一个trim方法,在写方法之前,我们要先了解一下trim方法具体是干嘛的。
官方文档中给我们的解释是:去除字符串的头尾空格。
让我们看一下实例:
var str = " Runoob ";
alert(str.trim());
//输出结果
//Runoob
可以看到,字符串两边的空格都被删除掉了;
了解trim是干什么用的之后,我们就可以进行用代码实现了;
方法一
暴力循环
思路:循环找出头和尾的第一个非空格字符并取得索引下标,利用slice方法截取出剩余字符串并返回。
function trims(str) {
var i=0;
// 从前往后循环遍历找出第一个不是空格的值的索引下标
while(str.charAt(i) == " ") {
i++;
}
// 从该索引开始截取后面所有的字符串
var str1 = str.slice(i);
var j=str1.length-1;
// 从后往前循环遍历找出第一个不是空格的值的索引下标
while(str1.charAt(j) == " ") {
j--;
}
// 同理 截取字符串
var str2 = str1.slice(0,j+1);
return str2;
}
方法二
正则表达式替换
思路:利用正则表达式从前后两个方向匹配多个空格,将匹配到的空格用replace替换为“”,也就是替换为空。
function trim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}