JS 利用eval构建replace函数无效

发布于 2022-09-05 00:34:59 字数 1333 浏览 15 评论 0

代码含义:构建一个简单的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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝眼泪 2022-09-12 00:34:59

replace 不会改变原有值,而是返回新串。

其实你可以用 new RegExp(a, 'g') 就不需要 eval

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文