有没有办法实现这个函数?因为我发现它很难理解,特别是带有 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 );
});
}
提前谢谢
最佳答案
让我们看看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
,因为替换函数仅引用主匹配.
关于javascript 凯撒密码算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26584958/