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
replace 不会改变原有值,而是返回新串。
其实你可以用
new RegExp(a, 'g')
就不需要 eval