第二天
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"}));