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. html5 - node静态资源服务器设置了Cache-Control,但浏览器从来不走3042. android - ionic应用打包部署了,但是连接不上服务器,就连写一个a标签链接到百度都不可以3. 老师百度网盘分享一下WampServer的包啊,我们下载几kb要下载一天的.4. 前端 - node vue webpack项目文件结构5. node.js - vue 子组件的菜单 如何与 父组件 通信?6. javascript - 请问如何在pc端网站调用微信支付的接口7. webpack - vue-cli写的项目(本地跑没有问题),准备放到Nginx服务器上,有什么配置需要改的?还有怎么部署?8. 微信内网页上传图片问题9. javascript - 百度的webuploader上传的问题10. javascript - echart+百度地图
