给定一个字符串,返回一个交换了第一个和最后一个字符的新字符串。
示例
frontBack('code') → eodc
frontBack('a') → a
frontBack('ab') → ba
//代码
function frontBack(str){
let first = str.charAt(0);
let last = str.charAt(str.length-1);
let newStr = str.slice(1, str.length-1);
if (str.length == 1) {`enter code here`
return str;
}
else {
return last + newStr + first;
}
}
您可以使用正则表达式捕获第一个和最后一个字符,然后将它们相互替换。感谢@Ivar指出了一个简化:
const frontBack = str => str.replace(
/(.)(.*)(.)$/g, '$3$2$1'
);
console.log(
frontBack('code'),
frontBack('a'),
frontBack('ab')
);
如果输入中只有一个字符,它将不匹配,因此将原封不动地返回。
如果输入中有两个或多个字符,第一个字符将被捕获,中间的捕获组将仅根据需要展开,以便最终捕获组及其一个字符接触字符串的末尾。
你也可以把它变成一个数组,同时替换两端:
const frontBack = str => {
const arr = [...str];
[arr[0], arr[arr.length - 1]] = [arr[arr.length - 1], arr[0]];
return arr.join('');
};
console.log(
frontBack('code'),
frontBack('a'),
frontBack('ab')
);
但您当前的代码也是一个不错的解决方案。
const frontBack = (str = '') => `${str.charAt(0)}${str.slice(1, str.length - 1)}${str.charAt(str.length - 1)}`;
例如。