javascript - Caesars Cipher,这是一个 freeCodeCamp 编码挑战
问题描述
这是一个编码器和解码器函数,它接受一个编码值并返回解码值,它被称为 ROT13 Cipher,其中字母的值移动了 13 个位置。因此'A' ↔ 'N'、'B' ↔ 'O' 等等。我不知道为什么我的代码不起作用,谁能解释一下?下面是我的代码:
function rot13(str) {
for (let i = 0; i < str.length; i++){
let charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90){
let vary = charCode + 13;
if (vary > 90){
let newVary = vary - 90 - 1 + 65;
str.replace(String.fromCharCode(charCode), String.fromCharCode(newVary));
} else {
str.replace(String.fromCharCode(charCode), String.fromCharCode(vary));
};
};
};
return str;
}; console.log(rot13("SERR PBQR PNZC"));
解决方案
str.replace
不直接替换变量。它返回新字符串。相反,使用:
str = str.replace(...)