FreeCodeCamp之凯撒密码

下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。移位密码也就是密码中的字母会按照指定的数量来做移位。一个常见的案例就是ROT13密码,字母会移位13个位置。由'A' ↔ 'N', 'B' ↔ 'O',以此类推。

学习使用String.fromCharCode()和string.charCodeAt()注意第一个为静态方法,不能定义一个字符串然后使用他,像这样myStr.fromCharCode();是错误的,只能是String.fromCharCode(number1,number2,number3....),第一字母大写,返回的是numbers对应的Unicode字符。而string.charCodeAt(字符);正常使用,返回的是字符对应的Unicode值。对于本例字符串对应值如下:

A 65 B 66 C 67 D 68 E 69 F 70G 71 H 72 I 73 J 74 K 75 L 76 M 77 N 78 O 79 P 80Q 81 R 82 S 83 T 84 U 85 V 86 W 87 X 88 Y 89 Z 90

a 97 b 98 c 99 d 100 e 101 f 102 g 103 h 104 i 105 j 106 k 107 l 108 m 109 n 110o 111 p 112 q 113 r 114 s 115 t 116 u 117 v 118 w 119 x 120y 121 z 122 按照要求移位13位,先获取给定字符串的值,存入参数numbers   for(i=0;i<str.length;i++){var numbers=str.charCodeAt(i);}    对于大写字母,小于77的对于小写字母大于96小于110的都是加13,对于大于77小于91或者大于110小于123的都是-13,而位于65以下,122以上的都是其他字符直接返回numbers即可。最后获得的是一个数组newStr,还需要使用join方法,还原成字符串。

 

function rot13(str) { 
       var newStr=[];

       for(i=0;i<str.length;i++){

              numbers=str.charCodeAt(i);
             if(numbers<65||numbers>122){
                     newStr.push(String.fromCharCode(numbers));
             }else if((77<numbers&&numbers<91)||numbers>110){
                    newStr.push(String.fromCharCode(numbers-13));
            }else {
                    newStr.push(String.fromCharCode(numbers+13));
            }

       }return newStr.join("");

}

 

转载于:https://www.cnblogs.com/skyyo/p/7612724.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值