gpt4 book ai didi

javascript - JavaScript 中的凯撒密码 - 为什么 'A' 在这里变成 '['?

转载 作者:行者123 更新时间:2023-12-01 01:12:20 28 4
gpt4 key购买 nike

我目前正在经历一个 FreeCodeCamp 挑战,要求您创建一个 ROT13 密码(一种非常简单的密码,它将每个字母移动到永无止境的字母表中位于其前面的 13 个字母)。我的代码如下:

function rot13(str) {
let lettersRegex = /[A-Z]/;
let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
let charCodes = [];
for(let i = 0; i < str.length; i++) {
if(str.charAt(i).match(lettersRegex)) {
charCodes.push(str.charCodeAt(i));
} else {
charCodes.push(str.charAt(i));
}
}
let ret = '';
console.log(`charCodes is currently ${charCodes}`);
for(let i = 0; i < charCodes.length; i ++) {
let temp = 0;
if(lettersRegex.test(String.fromCharCode(charCodes[i]))) {
if((alphabet.indexOf(String.fromCharCode(charCodes[i])) + 13) > alphabet.length) {
temp = charCodes[i] + alphabet.indexOf(charCodes[i]) - 12;
}
else {
temp = charCodes[i] + 13;
}
ret += String.fromCharCode(temp);
} else {
ret += charCodes[i];
}
}
console.log(ret);
return ret;
}
rot13("GUR DHVPX OEBJA SBK WHZCF BIRE GUR YNML QBT.");
//THE QUICK BROWN FOX JUMPS OVER THE L[ZY DOG.

基本上,除了“A”之外的每个字母都会在密码后转移到正确的答案。是什么导致此代码中的“A”变成“[”而不是“N”?

对我的代码的任何评论或提示也将不胜感激。

最佳答案

这是一个简单的修复,将 > 更改为 >= 不要忘记数组是零索引的。if((alphabet.indexOf(String.fromCharCode(charCodes[i])) + 13) >= Alphabet.length)

关于javascript - JavaScript 中的凯撒密码 - 为什么 'A' 在这里变成 '['?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55058088/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com