JavaScript凯撒密码算法

问题描述:

有无论如何做这个功能?,因为我觉得很难理解,特别是与char parammeter功能,我不知道我在哪里或如何使用它。JavaScript凯撒密码算法

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); 
     }); 
} 

预先感谢您

+0

你的问题是什么?我猜你应该在搜索'ceasar cipher'和'ascii table'的时候解决这个问题。 – lupz 2014-10-27 10:07:28

让我们来看看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,因为替换函数仅指主要匹配。

+0

非常感谢,我发现你的回答非常清楚。 – galeonweb 2014-10-27 11:05:24