2014-10-27 228 views
0

有無論如何做這個功能?,因爲我覺得很難理解,特別是與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

回答

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,因爲替換函數僅指主要匹配。

+0

非常感謝,我發現你的回答非常清楚。 – galeonweb 2014-10-27 11:05:24