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 - 如何让双核浏览器默认选择急速模式渲染页面2. python - TypeError: tryMsgcode() takes exactly 2 arguments (0 given)3. MYSQL5.7以及postgresql,他们的JSON模式下的查询和存储性能如何!4. mysql优化 - mysql 分页查询优化。5. css - width设置为100%之后列表无法居中6. javascript - 页面加载慢,有什么优化方案7. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?8. javascript - 有没有什么办法过滤掉数据库中的乱码?9. css - flex布局垂直效果实现不了?10. python - 有什么好的可以收集货币基金的资源?

网公网安备