javascript - JS 利用eval构建replace函数无效
问题描述
代码含义:构建一个简单的GADERYPOLUKI解码器
The GADERYPOLUKI is a simple substitution cypher used in scouting to encrypt messages. The encryption is based on short, easy to remember key. The key is written as paired letters, which are in the cipher simple replacement.
example:
encode('ABCD', 'agedyropulik'); // => GBCE
代码如下,我想用eval函数构建出可以替换字符的函数,但是貌似没有用。
function decode(str,key) { key = key.split(’’) while (key.length>0) {let b = key.pop(), a = key.pop();eval(`str.replace(/${a}/g, '${b}')`)eval(`str.replace(/${a.toUpperCase()}/g, '${b.toUpperCase()}')`)eval(`str.replace(/${b}/g, '${a}')`)eval(`str.replace(/${b.toUpperCase()}/g, '${a.toUpperCase()}')`)console.log(a, b, str, `str.replace(/${a}/g, '${b}')`) } return str}console.log(decode('Hmdr nge brres', 'gaderypoluki'))console.log('Hmdr nge brres'.replace(/g/g, 'a'))>>> k i Hmdr nge brres str.replace(/k/g, 'i') l u Hmdr nge brres str.replace(/l/g, 'u') p o Hmdr nge brres str.replace(/p/g, 'o') r y Hmdr nge brres str.replace(/r/g, 'y') d e Hmdr nge brres str.replace(/d/g, 'e') g a Hmdr nge brres str.replace(/g/g, 'a') Hmdr nge brres Hmdr nae brres
问题解答
回答1:replace 不会改变原有值,而是返回新串。
其实你可以用 new RegExp(a, ’g’) 就不需要 eval
相关文章:
1. javascript - jq append()添加的form,然后用ajax提交时,获取不了form的提交的元素2. python - xpath提取网页路径没问题,但是缺失内容?3. mysql 级联查询4. mysql - 根据ER图编写的SQl语句,不知道对不对5. java - Win10下 idea的编码设置成了UTF-8,但是返回时乱码显示,哪里有问题??6. datetime - Python如何获取当前时间7. 算法 - Java如何实现类似QQ多人聊天头像8. mysql多表查询的问题9. python - (初学者)代码运行不起来,求指导,谢谢!10. update方法不能更新字段值为0的数据

网公网安备