做牛客网的简单密码那道题。
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足 1 \le n \le 100 \1≤n≤100
下面的回答很巧妙,但是我不理解text = text.replace(/[(a-z)]/g,a 这个a=>{}a放这里是什么意思,还有就是 arr[i].indexOf(a) != -1)为什么要添加这个条件
let text = readline();
const arr = ['abc',2,'def',3,'ghi',4,'jkl',5,'mno',6,'pqrs',7,'tuv',8,'wxyz',9]
text = text.replace(/[(a-z)]/g,a => {
for(let i=0;i<arr.length;i++){
if(typeof arr[i] == 'string' && arr[i].indexOf(a) != -1){
return arr[i+1]
}
}
})
text = text.replace(/([A-Z])/g,a => {
if(a == 'Z'){
return 'a'
}else {
return String.fromCharCode(a.toLowerCase().charCodeAt(0)+1)
}
})
console.log(text)