javascript - JS utilisant eval pour créer la fonction de remplacement n'est pas valide
phpcn_u1582
phpcn_u1582 2017-07-05 10:47:23
0
1
869

Signification du code : Construisez un simple décodeur GADERYPOLUKI

Le GADERYPOLUKI est un chiffre de substitution simple utilisé dans le scoutisme pour crypter les messages. Le cryptage est basé sur une clé courte et facile à retenir. La clé est écrite sous forme de lettres appariées, qui sont dans le chiffre de remplacement simple.

exemple :

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

Le code est le suivant. Je souhaite utiliser la fonction eval pour créer une fonction qui peut remplacer des caractères, mais cela semble inutile.

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

répondre à tous(1)
扔个三星炸死你

replace ne modifie pas la valeur d'origine, mais renvoie une nouvelle chaîne.

En fait, vous pouvez utiliser new RegExp(a, 'g') et vous n'avez pas besoin d'eval

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal