第二天

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

Javascript题目

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

问题解答

解题思路

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

switch方法

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

對象方法

  1. let hd = ' d dwda w ';
  2. function trimD(type) {
  3. let obj = {
  4. start: /^\s+/g,
  5. end: /\s+/g,
  6. between:/(^\s+)|(\s+$)/g,
  7. middle:/\b\s*\b/g,
  8. all: /\s/g
  9. }
  10. return hd.replace(obj[type],'')
  11. }
  12. console.log(hd.trim()); // 去除两边的空格
  13. console.log(trimD('middle'));

去除中间空格多种方法

  1. const trimString = ({str = "", position = "both"}) => {
  2. if (!str) {
  3. return str;
  4. }
  5. const removePos = {
  6. left: () => str.replace(/^\s+/, ""),
  7. right: () => str.replace(/\s+$/, ""),
  8. both: () => str.replace(/(^\s+)|(\s+$)/g, ""),
  9. // 这个方法在字符串中间有多个空格时会有问题
  10. // middle: () =>
  11. // str
  12. // .split(" ")
  13. // .map((item) => (item ? item : " "))
  14. // .join(""),
  15. // 下面这种正则更优雅
  16. // middle: () => {
  17. // let result = str;
  18. // while (/\w+\s+\w+/.test(result)) {
  19. // result = result.replace(/(\w+)\s+(\w+)/, '$1$2');
  20. // }
  21. // return result;
  22. // },
  23. // 一行正则
  24. // middle: () => str.replace(/\b\s*\b/g,''),
  25. // 普通方法
  26. middle: () => {
  27. const leftSpace = str.match(/^\s+/)[0];
  28. const rightSpace = str.match(/\s+$/)[0];
  29. return leftSpace + str.split(" ").join("") + rightSpace;
  30. },
  31. // all: () => str.split(" ").join("")
  32. all: ()=> str.replace(/\s/g,'')
  33. };
  34. return removePos[position]();
  35. };
  36. const a = " 12a b cde fff ";
  37. console.log("trim left:", trimString({str: a, position: "left"}));
  38. console.log("trim right:", trimString({str: a, position: "right"}));
  39. console.log("trim middle", trimString({str: a, position: "middle"}));
  40. console.log("trim both:", trimString({str: a}));
  41. console.log("trim all:", trimString({str: a, position: "all"}));