javascript - 如何使用 .join .slice 或 .push 使这个加密器/解密器工作?
问题描述
我正在尝试制作一个加密器/解密器(非常简单),我需要将所有“o”换成“!”,“e”换成“#”,“t”换成“%”,“n”换成“&”。
首先你应该写一个文本,按下一个按钮并加密它,然后一个按钮将它解密为它的原始输入,但我似乎无法让它工作。(我对 JS 非常陌生)。
我目前正在做一个for循环,但如果有更好的建议,我会尝试理解。
function fResult() {
var deKey = [
"o",
"e",
"t",
"n"
];
var str = document.getElementById("text").value;
var enKey = [
"!",
"#",
"%",
"&"
];
var resultEn = fEncrypted(str, deKey, enKey);
document.getElementById("writeText").innerHTML= resultEn;
}
function fEncrypted(str, deKey, enKey) {
var resultKey = []
str = str.split("", str.length);
for (var i = 0; i < str.length; i++) {
if (str[i] == "o") {
str.slice(str[i]);
}
if (str[i] == "e") {
resultKey.push(enKey[1]);
}
if (str[i] == "t") {
resultKey.push(enKey[2]);
}
if (str[i] == "n") {
resultKey.splice(1, 1, (enKey[3]));
}
else {
resultKey.push(str[i]);
}
我认为既然我使用if str[i] == "letter"
它应该跳过 push on else
,但它只是将预期的“加密字母”推到原始字母前面。
解决方案
else 只适用于最后一个 if。要执行您对 else 的询问,除了第一个和最后一个块之外,您需要使用 else if。我很困惑为什么每个块都不同,如果它们本质上都应该做同样的事情。
if (str[i] == "o") {
str.slice(str[i]);
}
else if (str[i] == "e") {
resultKey.push(enKey[1]);
}
else if (str[i] == "t") {
resultKey.push(enKey[2]);
}
else if (str[i] == "n") {
resultKey.splice(1, 1, (enKey[3]));
}
else {
resultKey.push(str[i]);
}
另外,你能用replace()
吗?它可以使用具有全局和不区分大小写选项的正则表达式来执行您想要的操作。该链接有一个例子。
推荐阅读
- windows - 安装本机反应的问题
- perl - 自动生存即使作为左值也不起作用
- sql - 如何优化此 SQL Delete 语句以获得更快的速度
- wordpress - Wordpress 自定义查询仅显示两个帖子
- mysql - 大型 MyISAM 表中的 MySQL 基本更新查询太慢
- json - 带有 OData 的 PowerShell ConvertFrom-Json 返回空集合
- c# - 在 RabbitMq .net 客户端中手动确认 IModel 线程安全吗?
- python - 熊猫读取excel文件并填充缺失值
- c# - UPDATE 语句与 Visual Studio 2019 的 FOREIGN KEY 约束冲突
- javascript - 从另一个输入值自动填充输入