【发布时间】:2017-11-09 02:50:03
【问题描述】:
我想我已经接近解决这个问题了。
对象是获取一串“加密”字符并将它们解密为实际单词。也许我的代码现在不是很优雅,我会到达那里,但我可以使用 charCodeAt() 开头'str = "SERR PBQR PNZC"' 来返回正确的 ASCII 码,根据需要加减 13,并将其连接到 strArray 中——我知道,它不是一个数组。但是我不能让 strArray 成为一个数组,所以我可以将它传递给 String.fromCharCode(null, strArray);让它返回正确的解密文本。
我的代码如下:
function rot13(str) { // LBH QVQ VG!
var strArray = '';
//var right = [70, 82, 69, 69, 32, 67, 79, 68, 69, 32, 67, 65, 77, 80];
//used above variable with String.fromCharCode.apply(null, right); and it worked.
for(var i = 0; i < str.length; i++){
//console.log(str.charCodeAt(i));
if(str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
strArray = strArray.concat(str.charCodeAt(i) + 13, ' ');
} else if(str.charCodeAt(i) >= 78) {
strArray = strArray.concat(str.charCodeAt(i) - 13, ' ');
} else {
strArray = strArray.concat(str.charCodeAt(i), ' ');
}
}
return strArray;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
任何帮助将不胜感激。
【问题讨论】:
-
我确实尝试过使用 stryArray.split(' ');但这没有用。
-
您目前的问题是什么?
-
推入一个数组中的所有数字,然后使用另一个循环将该数组变成一个字符串。
-
@zerkms 记住字符串是一个字符数组。
-
你是对的——你已经接近了。您似乎缺少的部分是将数字转换回字母。您正在制作一串单独的数字,但您可能想使用
String.fromCharCode()将它们转回字母。