suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript – JS, das eval zum Erstellen der Ersetzungsfunktion verwendet, ist ungültig

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_u1582phpcn_u15822757 Tage vor904

Antworte allen(1)Ich werde antworten

  • 扔个三星炸死你

    扔个三星炸死你2017-07-05 10:49:23

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

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

    Antwort
    0
  • StornierenAntwort