需求: 去除字符串
1) 前后空格
2) 前空格
3) 后空格
4) 中间空格
5) 去除中间空格(这个方法值得讨论)
let str = " 佐 助 " // 佐助中间有空格
let res = "" //用来保存处理后的结果
1) 去除前后空格
let removeSpacesBoth = function (str) {
let reg0 = /^\s*|\s*$/g // \s 空字符, 任意多个空格开头 或者 任意多个空格结尾, 全局匹配
let reg1 = /^\s+|\s+$/g
return str.replace(reg0, "") //这里使用 reg0 和 reg1都可以
}
res = removeSpacesBoth(str)
console.log(res)//佐 助
console.log(res.length)// 3
2) 去除开头空格
let removeSpaceHead = function (str) {
let reg2 = /^\s*/
let reg3 = /^\s+/
return str.replace(reg2, "")
}
res = removeSpaceHead(str)
console.log(res)//佐 助
console.log(res.length)//4
3) 去除结尾空格
let removeSpaceTail = function (str) {
let reg4 = /\s*$/
let reg5 = /\s+$/
return str.replace(reg4,"")
}
res = removeSpaceTail(str);
console.log(res) // 佐 助
console.log(res.length) //4
4) 去除全部空格
let removeSpaceAll = function (str){
let reg5 = /\s/g
return str.replace(reg5, "")
}
res = removeSpaceAll(str)
console.log(res) //佐助
console.log(res.length)//2
5) 去除中间空格
我在这里的思路不是直接使用正则来匹配, 因为想不出来(哭笑);
1. 使用正则将头尾空格部分索引取出
2. 截取头尾空格部分
3. 去除全部空格
4. 返回拼接结果
let removeSpaceCenter = function (str){
let leftIndex = str.search(/[^\s]/) //找到左索引
let rightIndex = str.search(/\S\s*$/)+1 //找到右空格索引
let leftSpace = str.slice(0,leftIndex) //左空格
let rightSpace = str.slice(rightIndex) //右空格
str = removeSpaceAll(str) //去除全部空格(这个方法是上面写到的)等价于下面的注释代码
// str.replace(/\s/g, "")
return leftSpace + str + rightSpace //返回拼接结果
}
res = removeSpaceCenter(str)
console.log(res)// 佐助
console.log(res.length) //4
如果您能想出更好的办法, 或者能够直接使用正则进行匹配,欢迎在评论区或者私信赐教