我想知道这个问题是否还有其他解决办法.JAVASCRIPT



给定一个字符串,返回一个交换了第一个和最后一个字符的新字符串。

示例

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)}`;

例如。

相关内容

最新更新