1、写一个ROT13函数,实现输入加密字符串,输出解密字符串。
2、所有的字母都是大写(每个字母都有其对应的Unicode--UTF16值),不要转化任何非字母形式的字符(例如:空格、标点符号)。
3、编码思路~~A的ASCLL码值为65,M为77、Z为90. A的ROT13函数即 N=A+13 。而处理非字母字符串时只需等于自身即可。
function rot13(str){
var arr = [];
for(var i=0;i<str.length;i++){
var num = str.charCodeAt(i); // 字母转为Unicode值
if(num>=65&&num<=90){
if(num<=77){
num = num + 13;
}
else{num = num -13;} //判断是否为字母,N前段+13,后-13。
}
arr[i] = String.fromCharCode(num); //非字母的空格、标点符号等于自身
}
return arr.join("");
}
rot13("SERR PBQR PNZC");
小知识
1、String.charCodeAt() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
String.fromCharCode() https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode
而对于数组的定义方式:
var arr = [];
var arr = new Array();这两种方式是一样的,没什么区别,一种是通过直接量定义,一种是通过JavaScript的内置对象来定义。但是用哪种方式有时候要看定义什么样的数组
比如new Array(10) 和 [10]这肯定是不一样的
前者new Array(10) 是定义10个空间大小的数组,每个数组的值都为undefined
后者是定义[10]1个空间大小的数组,并且这个数组的值为10