jquery - JQuery在字符映射后用其他字母替换字母时“循环”
问题描述
我正在尝试使用 JQuery 将每个字母替换为另一个字母,. 有密码模式和解密模式。不幸的是,似乎只有密码模式有效。解密似乎是用字符映射的两个首字母替换所有字母,就好像“循环”一样。这就是我卡住的地方(是的,我是新手。)
这是一个小提琴:http: //jsfiddle.net/xpvt214o/692455/
到目前为止,这是我的代码:
$('#chiffrer').keyup(function (chiffrement) {
var chiffrer = {
u:'a',z:'b',b:'c',c:'d',a:'e',
d:'f',f:'g',g:'h',e:'i',h:'j',
j:'k',k:'l',l:'m',m:'n',i:'o',
n:'p',p:'q',q:'r',r:'s',s:'t',
o:'u',t:'v',v:'w',w:'x',x:'y',y:'z'
};
textechiffre = chiffrement.target.value;
for (var txt in chiffrer) {
var temp = new RegExp(txt, 'gim');
textechiffre = textechiffre.replace(temp, chiffrer[txt]);
$('#resultat2').text(textechiffre);
}})
$('#dechiffrer').keyup(function (dechiffrement) {
var dechiffrer = {
a:'u',b:'z',c:'b',d:'c',e:'a',
f:'d',g:'f',h:'g',i:'e',j:'h',
k:'j',l:'k',m:'l',n:'m',o:'i',
p:'n',q:'p',r:'q',s:'r',t:'s',
u:'o',v:'t',w:'v',x:'w',y:'x',z:'y'
};
textedechiffre = dechiffrement.target.value;
for (var txt in dechiffrer) {
var temp = new RegExp(txt, 'gim');
textedechiffre = textedechiffre.replace(temp, dechiffrer[txt]);
$('#resultat').text(textedechiffre);
}})
解决方案
您的任何功能都不能正常工作;您在循环加密(或解密)对象时更改了textechiffre
字符串。例如,“a”可能会更改为“e”,但同样的“e”可能会更改为“i”等。请改用替换函数:
$('#resultat2').text(textechiffre.replace(/[a-z]/gi, char => chiffrer[char]));
完整代码:
$('#chiffrer').keyup(function(chiffrement) {
var chiffrer = {
u: 'a',
z: 'b',
b: 'c',
c: 'd',
a: 'e',
d: 'f',
f: 'g',
g: 'h',
e: 'i',
h: 'j',
j: 'k',
k: 'l',
l: 'm',
m: 'n',
i: 'o',
n: 'p',
p: 'q',
q: 'r',
r: 's',
s: 't',
o: 'u',
t: 'v',
v: 'w',
w: 'x',
x: 'y',
y: 'z'
};
const textechiffre = chiffrement.target.value;
$('#resultat2').text(textechiffre.replace(/[a-z]/gi, char => chiffrer[char]));
})
$('#dechiffrer').keyup(function(dechiffrement) {
var dechiffrer = {
a: 'u',
b: 'z',
c: 'b',
d: 'c',
e: 'a',
f: 'd',
g: 'f',
h: 'g',
i: 'e',
j: 'h',
k: 'j',
l: 'k',
m: 'l',
n: 'm',
o: 'i',
p: 'n',
q: 'p',
r: 'q',
s: 'r',
t: 's',
u: 'o',
v: 't',
w: 'v',
x: 'w',
y: 'x',
z: 'y'
};
const textedechiffre = dechiffrement.target.value;
$('#resultat').text(textedechiffre.replace(/[a-z]/gi, char => dechiffrer[char]));
})
body {
font-family: monospace;
font-size: 1.5rem;
}
textarea {
width: 200px;
height: 150px;
margin: auto;
}
#container {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
}
textarea#dechiffrer {
outline: none;
background: rgba(78, 182, 185, 0.2);
}
textarea#dechiffrer,
textarea#dechiffrer::placeholder {
color: rgba(95, 158, 160, 1);
}
textarea#chiffrer {
outline: none;
background: rgba(205, 92, 92, 0.2);
}
textarea#chiffrer,
textarea#chiffrer::placeholder {
color: rgba(205, 92, 92, 1);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<textarea type="text" placeholder="decypher" name="dechiffrer" id="dechiffrer"></textarea>
<textarea type="text" placeholder="cypher" name="chiffrer" id="chiffrer"></textarea>
</div>
<span id="resultat"></span><br>
<span id="resultat2"></span>
推荐阅读
- cuda - 如何在 Google.colab 上运行 .cu 文件?
- css - 在 SCSS 中将十六进制字符串转换为十六进制颜色值
- breakpoints - 当前不会命中断点(仅在视图中)
- php - 在 edit_customer.blade.php 文件中获取数据
- python - 如何比较 html 中的 datetimepicker 表单的日期和 python 中的另一个日期
- delphi - Delphi 字符串排序
- docker - 为什么 docker swarm 使用秘密路径而不是秘密值?
- flutter - 在flutter中使用firebase动态链接导航到特定的firestore页面
- javascript - 如何在 vanilla js/ts (Angular) 中重启动画并支持 IOS
- mysql - 如何编写 sql 查询以根据所选状态获取产品的成本 a 和成本 b?