写一个方法去掉字符串中的空格(js)

来源博客:【Harryの心阁

第二天

  • 题目来源:前端每日知识3+1

Javascript题目

题目:写一个方法去掉字符串中的空格(js)

问题解答

解题思路

  • 要求传入不同的类型分别能去掉前、后、前后、中间、全部的空格

switch方法

let hd = '  d  dwda w   ';
function trimD(type) {
    switch (type) {
        case '0': return hd.trimStart(); // 开头
        case '1': return hd.trim(); // 两边
        case '2': return hd.trimEnd(); // 末尾
        case '3': return hd.replace(/\s/g,'') // 全部
        case '4': return hd.replace(/\b\s*\b/g,'')
    }
}
console.log(hd.trim());  // 去除两边的空格
console.log(trimD('middle'));

對象方法

let hd = '  d  dwda w   ';
function trimD(type) {
    let obj = {
        start: /^\s+/g,
        end: /\s+/g,
        between:/(^\s+)|(\s+$)/g,
        middle:/\b\s*\b/g,
        all: /\s/g
    }
    return hd.replace(obj[type],'')
}
console.log(hd.trim());  // 去除两边的空格
console.log(trimD('middle'));

去除中间空格多种方法

const trimString = ({str = "", position = "both"}) => {
  if (!str) {
    return str;
  }
  const removePos = {
    left: () => str.replace(/^\s+/, ""),
    right: () => str.replace(/\s+$/, ""),
    both: () => str.replace(/(^\s+)|(\s+$)/g, ""),
    // 这个方法在字符串中间有多个空格时会有问题
    // middle: () =>
    //   str
    //     .split(" ")
    //     .map((item) => (item ? item : " "))
    //     .join(""),
    // 下面这种正则更优雅
    // middle: () => {
    //   let result = str;
    //   while (/\w+\s+\w+/.test(result)) {
    //     result = result.replace(/(\w+)\s+(\w+)/, '$1$2');
    //   }
    //   return result;
    // },
    // 一行正则
    // middle: () => str.replace(/\b\s*\b/g,''),
    // 普通方法
    middle: () => {
      const leftSpace = str.match(/^\s+/)[0];
      const rightSpace = str.match(/\s+$/)[0];
      return leftSpace + str.split(" ").join("") + rightSpace;
    },
    // all: () => str.split(" ").join("")
    all: ()=> str.replace(/\s/g,'')
  };
  return removePos[position]();
};
const a = "  12a b       cde fff ";
console.log("trim left:", trimString({str: a, position: "left"}));
console.log("trim right:", trimString({str: a, position: "right"}));
console.log("trim middle", trimString({str: a, position: "middle"}));
console.log("trim both:", trimString({str: a}));
console.log("trim all:", trimString({str: a, position: "all"}));
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Harry-iu

顺手给小编加个鸡腿????

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值