Rumah  >  Soal Jawab  >  teks badan

javascript - JS menggunakan eval untuk membina fungsi ganti adalah tidak sah

Maksud kod: Bina penyahkod GADERYPOLUKI yang ringkas

GADERYPOLUKI ialah cypher penggantian ringkas yang digunakan dalam pengintipan untuk menyulitkan mesej Penyulitan adalah berdasarkan kunci yang pendek dan mudah diingati sebagai huruf berpasangan, yang terdapat dalam penggantian ringkas.

contoh:

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

Kod adalah seperti berikut Saya ingin menggunakan fungsi eval untuk membina fungsi yang boleh menggantikan aksara, tetapi ia seolah-olah tidak berguna.

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_u15822684 hari yang lalu861

membalas semua(1)saya akan balas

  • 扔个三星炸死你

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

    replace tidak mengubah nilai asal, tetapi mengembalikan rentetan baharu.

    Malah, anda boleh menggunakan new RegExp(a, 'g') dan anda tidak memerlukan eval

    balas
    0
  • Batalbalas