前端Freecode camp

FCC 题目 Caesars Cipher

2017-04-06  本文已影响385人  a1838b5b5d28

要求

让上帝的归上帝,凯撒的归凯撒。

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。

移位密码也就是密码中的字母会按照指定的数量来做移位。

一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。

写一个ROT13函数,实现输入加密字符串,输出解密字符串。

所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。

当你完成不了挑战的时候,记得开大招'Read-Search-Ask'。

这是一些对你有帮助的资源:

String.charCodeAt()
String.fromCharCode()


代码

function rot13(str) { // LBH QVQ VG!
      var arr=str.split('');
      console.log(arr);
      for(var i=0;i<arr.length;i++){
        var num1=arr[i].charCodeAt(0);//输入的加密字符编码
        var num2=num1-13; //输入的加密字符编码解密后-13用来解密
        if(num1>=65&&num1<=90){ //判断字符是不是字母 
                if(num2<65){   //num1-13超出字母的编码表
                arr[i]=String.fromCharCode(num1+13);// 90-(13-(num1-64))
            }
            else{
                arr[i]=String.fromCharCode(num2);
            }
        }
        else{
            arr[i]=arr[i];
        }
        str=arr.join("");
        
      }   
      return str;
    }

要点

ACCII编码表 里面的字母编码

上一篇下一篇

猜你喜欢

热点阅读