"abc123 ,def456",反转字母,其他位置不变
"abc123 ,def456",反转字母,其他位置不变。
无意间看到个有意思的面试题,忽然来了兴趣想着来做一下。
操作字符串用正则的效率比较高,但第一反应还是用原生来操作。下面说一说思路。
- 取出字符串中字母部分,拆成数组,翻转
- 拼接回原先的字符串
var a="abc123 ,def456";
//用split将a拆成数组b , b=[['a','b','c','1','2','3',' '],['d','e','f','4','5','6']]
var b= a.split(',').map((item)=>{
return item.split('');
});
var result=[];
b.forEach((item)=>{
for (var i = 0; i < item.length; i++) {
if (!isNaN(Number(item[i]))) {
result.push(item.splice(0,i).reverse().concat(item).join(''));
break
}
}
})
//最终得到的result数组中包含两项,cba123 ,fed456,用','进行拼接。得到最终结果。只针对这个或这种类型的字符串,如果存在字母前面有特殊字符,操作会跟麻烦,最后还是推荐用正则处理
console.log(result.join(','));
最后给出正则处理方法:
var result = a.replace(/([a-zA-Z]+)/g,str => str.split('').reverse().join(''))
console.log(result)
获取更多资源关注公众号:算了个球