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