非正则表达式:
全角空格Unicode编码为:12288
半角空格Unicode编码为:32
大概思路是:
1.利用Unicode编码从首尾分别开始遍历字符串,找到第一个非空格的位置索引
2.利用String对象的substring()方法从字符串中截取步骤1中获取的非空格起始结束索引值间的子串
substring()方法:
截取字符串片段,两个参数,第一个参数为截取片段的起始位置,第二个参数为截取片段的结束位置
emmmmm。。。。。两个参数的截取区间可以看做 [start,end) 前闭后开
function diyTrim(str) {
var result = "";
let start; //非空起始位置
let end; //非空终止位置
//注意全角和半角!!!!
//全角空格 Unicode编码 12288
//半角空格 Unicode编码 32
for(let i=0;i<str.length;i++){
if((str.charCodeAt(i) != 12288)&&(str.charCodeAt(i) != 32) ){
// console.log(i);
start = i;
break;
}
}
for(let i=str.length-1;i>=0;i--){
if((str.charCodeAt(i) != 12288)&&(str.charCodeAt(i) != 32) ){
end = i+1;
break;
}
}
result = str.substring(start,end);
return result
}
// 测试用例
console.log(diyTrim(' a f b ')); // ->a f b
console.log(diyTrim(' ffdaf ')); // ->ffdaf
console.log(diyTrim('1 ')); // ->1
console.log(diyTrim(' f')); // ->f
console.log(diyTrim(' a f b ')); // ->a f b
console.log(diyTrim(' ')); // ->
console.log(diyTrim(' ')); // ->
console.log(diyTrim('')); // ->
正则表达式:
var str = ' djd jdj ';
var re = /\s+/g;
var n = str.replace(re,"");
console.log(n);