javascript – JS, das eval zum Erstellen der Ersetzungsfunktion verwendet, ist ungültig
phpcn_u1582
phpcn_u1582 2017-07-05 10:47:23
0
1
892

Codebedeutung: Erstellen Sie einen einfachen GADERYPOLUKI-Decoder

Der GADERYPOLUKI ist ein einfacher Ersatzschlüssel, der beim Scouting zum Verschlüsseln von Nachrichten verwendet wird. Die Verschlüsselung basiert auf einem kurzen, leicht zu merkenden Schlüssel. Der Schlüssel wird als gepaarte Buchstaben geschrieben, die im einfachen Ersatzschlüssel enthalten sind

Beispiel:

encode("ABCD", "agedyropulik");             // => GBCE 

Der Code lautet wie folgt. Ich möchte die Funktion eval verwenden, um eine Funktion zu erstellen, die Zeichen ersetzen kann, aber sie scheint nutzlos zu sein.

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

phpcn_u1582
phpcn_u1582

Antworte allen(1)
扔个三星炸死你

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

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage