我正在用 JavaScript 开发凯撒密码的变体。不同之处在于,每 2 个空格生成一个随机字母并插入其中。我的加密工作得很好。我的解密大部分工作正常。我的程序解密了它,但我不知道如何删除随机字母。我正在编写一个函数来删除字母,我当前的代码如下:
let decryptedMessage = seoekx tbhea mtidrniughkt
function finalMessage (decryptedMessage) {
let finalMessage = "";
for (let i = 1; i < decryptedMessage.length - 1; i++) {
if (i % 2 === 0) {
finalMessage += decryptedMessage.replace(decryptedMessage[i],"");
}
else {
finalMessage += decryptedMessage[i];
}
}
return finalMessage;
}
const finalMessageResult = finalMessage(decryptedMessageResult);
console.log(`The final decrypted message is ${finalMessageResult}`);
这是我的输出:
eseekx tbhea mtidrniughkteseoex tbhea mtidrniughktxseoekxtbhea mtidrniughkttseoekx thea mtidrniughkthsoekx tbhea mtidrniughktaseoekxtbhea mtidrniughktmseoekx bhea mtidrniughktiseoekx tbhea mtirniughktrseoekx tbhea mtidriughktiseoekx tbhea mtidrnighktgseoekx tbea mtidrniughktk
我想我需要将finalMessage从for循环中取出,但我不知道该怎么做,因为我觉得if语句需要在for循环中才能循环遍历消息。
如有任何帮助,我们将不胜感激。
我觉得我需要将它放在带有 if else 语句的 for 循环中。我头脑中的逻辑是使用 i % 2 === 0,然后用“”替换该元素。但显然我脑子里的想法和正在执行的事情并不相同。我希望代码从字符串中删除随机字母,创建一条可读的消息。
看起来你的迭代器数学有点偏差,而且看起来你对算法考虑得太多了!试试这个:
let decryptedMessage = "seoekx tbhea mtidrniughkt";
function finalMessage (decryptedMessage) {
let finalMessage = "";
for (let i = 0; i < decryptedMessage.length; i++) {
if ((i + 1) % 3 !== 0) {
finalMessage += decryptedMessage[i];
}
}
return finalMessage;
}
const finalMessageResult = finalMessage(decryptedMessage);
console.log(`The final decrypted message is ${finalMessageResult}`);
我改变了一些事情:
i + 1
输出:
The final decrypted message is seek the midnight