gpt4 book ai didi

javascript - 为什么我的凯撒密码会跳过某些字符?

转载 作者:行者123 更新时间:2023-12-02 22:42:02 25 4
gpt4 key购买 nike

我有下面的代码,凯撒密码在每个输入字符上增加 13 个字符。它适用于几乎所有输入,但似乎会跳过随机字符。我就是想不明白为什么?!我仍在学习,所以任何帮助都会很棒!

输入是一个编码字符串,输出时每个字符向前移动 13 位。预期的输出应该是一个可读的字符串。

如果我输入 rot13('GUR DHVPX OEBJA SBK WHZCF BIRE GUR YNML QBT.') 我会期待 'THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.'但我得到的是“TH E Q U I C K B R O W N F B X J H M P S B V RE G U R L A Z Y DB G”。

我知道这可能是重复的,但到目前为止我找不到这个特定问题的答案。

function rot13(str) {

let newStr = [];

for (let i = 0; i < str.length; i++) {
let charNum = str.charCodeAt(i);
console.log(charNum);
if (charNum > 64 && charNum < 78) {
let res = str.replace(str[i], String.fromCharCode(charNum + 13));
newStr.push(res[i]);
} else if (charNum > 77 && charNum < 91) {
let res = str.replace(str[i], String.fromCharCode(charNum - 13));
newStr.push(res[i]);
} else {
newStr.push(str[i]);
}
}

console.log(newStr);
return newStr.join(" ");
}

rot13('GUR DHVPX OEBJA SBK WHZCF BIRE GUR YNML QBT.');

最佳答案

String.fromCharCode(charNum + 13)String.fromCharCode(charNum - 13) 就是您所需要的。您不需要替换 str 中索引 i 处的字符。

newStr.push(String.fromCharCode(charNum + 13));
newStr.push(String.fromCharCode(charNum - 13));

关于javascript - 为什么我的凯撒密码会跳过某些字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558424/

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