js使用正则完成字符串去除空格(前后空格, 前空格, 后空格, 全部空格,中间空格)

需求: 去除字符串

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

如果您能想出更好的办法, 或者能够直接使用正则进行匹配,欢迎在评论区或者私信赐教

你可能感兴趣的:(javascript,前端,html)