- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用 JS 创建一个 Caesar Cypher。它应该接受一个字符串和一个数字,并将字符串中的每个字母按提供的数字在字母表中移动,然后返回密码字符串。
我写了一些代码,将每个字母更改为它的 ASCII 代码,然后将输入数字添加到它,并将其转换回字符串。但是,当我运行代码时,我得到的只是一个空字符串。
我的代码如下。 (是的,我知道它可以被压缩,但我对 JS 还是很陌生)。
const caesar = function(string, num) {
let solved = "";
let stringArray = Array.from(string);
let asciiArray = [];
for (let i = stringArray[0]; i < stringArray.length; i++) {
let asciiNum = stringArray.charChodeAt(i);
if (asciiNum >= 65 && asciiNum <= 90 || asciiNum >= 97 && asciiNum <= 122) {
asciiArray += asciiNum;
}
};
for (let i = asciiArray[0]; i < asciiArray.length; i++) {
asciiArray.map(function() {
asciiArray[i] += num;
});
};
let cypherArray = [];
for (let i = asciiArray[0]; i < asciiArray.length; i++) {
cypherArray += asciiArray[i].charCodeAt(0);
};
solved = cypherArray.join();
return solved;
};
console.log(caesar("hello", 2));
最佳答案
您的代码有很多错误。
1) 你的 charChodeAt
有错别字。
2) 您没有向数组中添加任何内容(您需要将push
元素放入数组中)。
3) charCodeAt
的反义词是fromCharCode
最后一个循环需要它。
4) 您应该查看这两种方法的文档,因为您使用 charCodeAt
的方式不正确。
5) 你不需要那个 map
。
6) 您需要为join
指定一个分隔符。
除此之外一切都很好!
const caesar = function(string, num) {
let solved = "";
let stringArray = Array.from(string);
let asciiArray = [];
for (let i = 0; i < stringArray.length; i++) {
let asciiNum = stringArray[i].charCodeAt(0);
if (asciiNum >= 65 && asciiNum <= 90 || asciiNum >= 97 && asciiNum <= 122) {
asciiArray.push(asciiNum);
}
};
for (let i = 0; i < asciiArray.length; i++) {
asciiArray[i] = asciiArray[i] += num;
};
let cypherArray = [];
for (let i = 0; i < asciiArray.length; i++) {
cypherArray.push(String.fromCharCode(asciiArray[i]));
};
solved = cypherArray.join('');
return solved;
};
console.log(caesar('javascript', 1));
关于Javascript Caesar Cypher 只输出空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639677/
您好,我正在研究这个 Caesar 密码解密器,它采用加密字符串并使用所有 key 对其进行解密(如果它们与另一条消息相似,则另一个函数将匹配它们)。我有 Decipher 函数,但我只是想知道是否有
我正在研究 cs50 类(class)中的 pset2,但我不明白为什么我一直收到这个我没有声明的错误,因为我想我做了。首先我要求一个数字用作一个用于加密的 key ,而不是我要求的纯文本,它应该用给
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
我一直在尝试解决 cs50 的凯撒问题的不太舒服的版本,并且只想在这个问题之前说我是一个完全的初学者。 该程序应该要求用户输入 key 和明文,然后使用提供的 key 对该文本进行加密。例如,对于 k
在下面的代码中,根据放置 'Printf("Ciphertext: )' 语句的位置,我得到不同的输出,我无法理解为什么。有人可以指出我缺少什么吗?下面你可以找到代码,以及输出(粗体变量部分)。 #i
来 self 的 caesar.c 文件的代码 #include #include #include #include #include int main(int argc, string
我正在尝试用 JS 创建一个 Caesar Cypher。它应该接受一个字符串和一个数字,并将字符串中的每个字母按提供的数字在字母表中移动,然后返回密码字符串。 我写了一些代码,将每个字母更改为它的
我正在尝试创建一个函数 rotate_character(char, rot) 接收一个字符“char”(长度为1的字符串)和一个整数“rot”。该函数应返回一个长度为 1 的新字符串,这是将 cha
对于类(class),我必须用 C++ 开发一个凯撒加密项目,它接收一个字符串,并将所有 ascii 代码移动一个随机整数。我的项目运行完美,代码如下: #include #include #in
我正在编写一个具有 4 个不同函数的程序,其中一个询问用户是否要编码/解码,另一个询问在动态内存中输入字符串、实际解密函数和输出函数。我做了一切,但我遇到的唯一问题是考虑输入的单词中是否有空格。 在我
我用 C 为我的类(class)编写了一个凯撒密码程序,但它似乎没有正确加密。该程序从句子“THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG”中获取输入并使用从键
我在网上搜索了很长时间,寻找一个简单的 C 语言凯撒芯片/加密算法。我找到了一个,但并不完美,所以我已经更改了代码。仍然有问题,因为一位 friend 说该程序也应该能够处理大 key 。例如带有键的
我正在尝试制作 Julius Caesar Cipher 程序,但通过在句子的开头和结尾添加一个随机字母来添加一个扭曲。出于某种原因,当我输入一个长字符串时,打印时字符串的一部分丢失了。我正在使用 p
为什么我的代码不接受不包含字符 a-z A-Z 0-9 的字符串?如果要对此进行加密以转移例如“aaaaa[[[[[[”,我得到一个错误。我想要代码,以便它也可以接受空格或任何内容,并跳过那些不是 a
我正在尝试运行 edx 编程简介中的程序分配 caesar.c。它需要一个能够使用凯撒加密来加密字符串的程序:因此,用户必须输入 key (命令行);例如, key 为 2 时,“A”字符需要用“C”
我正在创建一个凯撒密码,我正在尝试弄清楚如何让它同时处理大写和小写字母。例如,如果我输入“Hello World”,我希望它以相同的格式“Ifmmp Xpsme”进行加密。 using System;
我正在做一个凯撒密码。尝试将字符串中的所有字符替换为移位字母表中的某个字符。 这是我到目前为止的代码 public static String caesarify(String str, int
我完全是 C++ 的初学者,到目前为止,在学校里我们只学习和使用过 Java。我们今年的第一个项目是创建一个凯撒密码,但我们必须使用我们教授提供的头文件。在这一点上,我只是试图在编码加密和解密方法之前
所以目前,我的代码看起来像这样(感谢我在另一篇文章中的帮助) phrase = raw_input("Enter text to Cipher: ") shift = int(raw_input("P
尝试在 C 中创建一个 Caesar Cypher,并在移动字母时从超过 'z' 的小写字母中获得一些麻烦的输出 #include void confab(const char* inText, i
我是一名优秀的程序员,十分优秀!