javascript-caesar密码算法

javascript-caesar密码算法,javascript,regex,string,encryption,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) {

还有什么方法可以实现这个函数吗?因为我发现它很难理解,特别是带有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 );
        });
}
提前感谢您

让我们看看的函数定义:

str.replace(regexp|substr, newSubStr|function [, flags]);
在JavaScript中,我们可以将替换函数传递给
String.replace
函数。描述了如何填充函数的参数

基本上:

  • 第一个参数是匹配整个表达式的字符串(相当于替换字符串中的
    $&
  • 然后是捕获组的内容(相当于
    $n
    ,其中
    n
    为正数)。将有与捕获组的数量一样多的参数
  • 然后是主匹配的偏移量
  • 最后一个参数是输入字符串
因此,与
/([a-z])/ig匹配的任何内容都将作为第一个参数提供给替换函数(
char
)。匹配的字符将被处理并作为替换字符返回


在您的代码中,
/([a-z])/ig
可以简化为
/[a-z]/ig
,因为替换函数只涉及主匹配项。

您的问题是什么?我猜你应该在搜索“Cesar cipher”和“ascii table”时找到答案。非常感谢,我发现你的答案非常清楚。