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. Java中main方法里面的参数一定要是String []args吗?2. 系统重装后,恢复mysql5.5?3. docker绑定了nginx端口 外部访问不到4. javascript - node.js中stat() access() open() readFile()都能判断文件是否存在?5. html5 - 目前 公司App 嵌入H5页面 做个 手机支付功能 没有做过 所以 请求各位有经验的 给个思路6. font-family - 我引入CSS3自定义字体没有效果?7. mysql - sql 左连接结果union右连接结果,导致重复性计算怎么解决?8. css - 如何讓圖片像雲一樣的行為?9. javascript - js 多维数组的问题10. node.js - Nodejs微信开发,视频上传成功,但是不返回给用户

网公网安备