首页 > 解决方案 > 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"));

标签: javascript

解决方案


str.replace不直接替换变量。它返回新字符串。相反,使用:

str = str.replace(...)

推荐阅读