我一直在准备进行训练营面试,因此我正在练习创建一个使用ROT13密码对字符串进行密码处理的程序。对于不熟悉的人,下面的图表显示了它的工作方式:
我的代码面临的问题是,当我遍历for循环时,尽管满足条件,但每次迭代获得的结果都不会通过IF语句。如果有任何优化该代码的建议,我也将不胜感激!
这都是很新的东西,令人沮丧,但同时又很有趣!
function jCheck(num){
if (num >= 26){
return num - 26
}
else {
return num
}
}
function flipStr(str){
const upperCheck = /[A-Z]/g
const lowerCheck =/[a-z]/g
const upperAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const lowerAlpha = "abcdefghijklmnopqrstuvwxyz"
let newStr = []
for (let i = 0; i < str.length; i++){
console.log(str[i],lowerCheck.test(str[i]))
if (lowerCheck.test(str[i]) === true){
console.log('lower ran')
let j = lowerAlpha.indexOf(str[i]) + 13
j = jCheck(j)
newStr.push(lowerAlpha[j])
}
else if (upperCheck.test(str[i]) === true){
let j = upperAlpha.indexOf(str[i]) + 13
j = jCheck(j)
newStr.push(upperAlpha[j])
}
else{
console.log('else ran')
newStr.push(str[i])
}
}
return newStr.join("")
}
var input = 'aaaaaa!'
console.log(flipStr(input)) // outputs 'nanana!' instead of 'nnnnnn!'