javascript caesar密码算法

时间:2014-10-27 09:58:43

标签: javascript regex string encryption

有没有做这个功能?,因为我觉得很难理解,特别是那个带有char参数的功能,我看不到我在哪里或如何使用它。

function trans(msg, rot) {
    //Reemplaza cada letra encontrada de la expresion [a-z], por el caracter codificado de la funcion
    return msg.replace(/([a-z])/ig,
        function(char) {
            var codASCII = char.charCodeAt(0);
            return String.fromCharCode( codASCII >= 97 ? (codASCII + rot + 26 - 97) % 26 + 97 : (codASCII + rot + 26 - 65) % 26 + 65 );
        });
}

提前谢谢

1 个答案:

答案 0 :(得分:2)

让我们看一下String.replace的函数定义:

str.replace(regexp|substr, newSubStr|function [, flags]);

在JavaScript中,我们可以将替换函数传递给String.replace函数。如何填充函数的参数in this section of MDN article

基本上:

  • 第一个参数是与整个表达式匹配的字符串(相当于替换字符串中的$&
  • 后面是捕获组的内容(相当于$n,其中n是正数)。与捕获组的数量一样多的参数。
  • 跟随主赛的偏移
  • 最后一个参数是输入字符串。

因此,/([a-z])/ig匹配的任何内容都将作为第一个参数(在本例中为char)提供给替换函数。匹配的字符将被处理并作为替换字符返回。

在您的代码中,/([a-z])/ig可以简化为/[a-z]/ig,因为替换功能仅指主要匹配。