代码之家  ›  专栏  ›  技术社区  ›  Arntjine

jquery用字符映射后的其他字符替换字母时的“循环”[副本]

  •  1
  • Arntjine  · 技术社区  · 7 年前

    我试图用jquery把每封信都换成另一封。有密码模式和解密模式。不幸的是,只有密码模式才有效。除字符似乎正在用字符映射的前两个字母替换所有字母,就好像是“循环”。这就是我被困的地方(是的,我是个新手。)

    这是一把小提琴: http://jsfiddle.net/xpvt214o/692455/

    以下是迄今为止我的代码:

    $('#chiffrer').keyup(function (chiffrement) {
    var chiffrer = {
    u:'a',z:'b',b:'c',c:'d',a:'e',
    d:'f',f:'g',g:'h',e:'i',h:'j',
    j:'k',k:'l',l:'m',m:'n',i:'o',
    n:'p',p:'q',q:'r',r:'s',s:'t',
    o:'u',t:'v',v:'w',w:'x',x:'y',y:'z'
    };
    textechiffre = chiffrement.target.value;
    for (var txt in chiffrer) {
        var temp = new RegExp(txt, 'gim');
        textechiffre = textechiffre.replace(temp, chiffrer[txt]);
        $('#resultat2').text(textechiffre);
    }})
    
    $('#dechiffrer').keyup(function (dechiffrement) {
    var dechiffrer = {
    a:'u',b:'z',c:'b',d:'c',e:'a',
    f:'d',g:'f',h:'g',i:'e',j:'h',
    k:'j',l:'k',m:'l',n:'m',o:'i',
    p:'n',q:'p',r:'q',s:'r',t:'s',
    u:'o',v:'t',w:'v',x:'w',y:'x',z:'y'
    };
    textedechiffre = dechiffrement.target.value;
    for (var txt in dechiffrer) {
        var temp = new RegExp(txt, 'gim');
        textedechiffre = textedechiffre.replace(temp, dechiffrer[txt]);
        $('#resultat').text(textedechiffre);
    }})
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   CertainPerformance    7 年前

    textechiffre

    $('#resultat2').text(textechiffre.replace(/[a-z]/gi, char => chiffrer[char]));
    

    $('#chiffrer').keyup(function(chiffrement) {
      var chiffrer = {
        u: 'a',
        z: 'b',
        b: 'c',
        c: 'd',
        a: 'e',
        d: 'f',
        f: 'g',
        g: 'h',
        e: 'i',
        h: 'j',
        j: 'k',
        k: 'l',
        l: 'm',
        m: 'n',
        i: 'o',
        n: 'p',
        p: 'q',
        q: 'r',
        r: 's',
        s: 't',
        o: 'u',
        t: 'v',
        v: 'w',
        w: 'x',
        x: 'y',
        y: 'z'
      };
      const textechiffre = chiffrement.target.value;
      $('#resultat2').text(textechiffre.replace(/[a-z]/gi, char => chiffrer[char]));
    
    })
    
    $('#dechiffrer').keyup(function(dechiffrement) {
      var dechiffrer = {
        a: 'u',
        b: 'z',
        c: 'b',
        d: 'c',
        e: 'a',
        f: 'd',
        g: 'f',
        h: 'g',
        i: 'e',
        j: 'h',
        k: 'j',
        l: 'k',
        m: 'l',
        n: 'm',
        o: 'i',
        p: 'n',
        q: 'p',
        r: 'q',
        s: 'r',
        t: 's',
        u: 'o',
        v: 't',
        w: 'v',
        x: 'w',
        y: 'x',
        z: 'y'
      };
      const textedechiffre = dechiffrement.target.value;
      $('#resultat').text(textedechiffre.replace(/[a-z]/gi, char => dechiffrer[char]));
    })
    body {
      font-family: monospace;
      font-size: 1.5rem;
    }
    
    textarea {
      width: 200px;
      height: 150px;
      margin: auto;
    }
    
    #container {
      display: flex;
      flex-flow: row wrap;
      justify-content: space-around;
    }
    
    textarea#dechiffrer {
      outline: none;
      background: rgba(78, 182, 185, 0.2);
    }
    
    textarea#dechiffrer,
    textarea#dechiffrer::placeholder {
      color: rgba(95, 158, 160, 1);
    }
    
    textarea#chiffrer {
      outline: none;
      background: rgba(205, 92, 92, 0.2);
    }
    
    textarea#chiffrer,
    textarea#chiffrer::placeholder {
      color: rgba(205, 92, 92, 1);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="container">
      <textarea type="text" placeholder="decypher" name="dechiffrer" id="dechiffrer"></textarea>
      <textarea type="text" placeholder="cypher" name="chiffrer" id="chiffrer"></textarea>
    </div>
    <span id="resultat"></span><br>
    <span id="resultat2"></span>