1

我正在研究一个简单的密码算法,我试图弄清楚如何在字符数超过 122 时停止 if 语句在字符 122 (z) 并从字符 97 (a) 开始。这就是我所拥有的到目前为止,环顾了 MDN 和 W3 学校并没有提出任何建议。

enter code here
function simpleCipher(str) {

   var newString = [];

  for (var i = 0; i < str.length; i ++) {
     if (str.charCodeAt(i) > 97 || str.charCodeAt(i) < 122) {
       var convertString = String.fromCharCode(str.charCodeAt(i) + 4);
       var powerString = newString.push(convertString);
    } else {
      return;
    }
  } 
  return newString.join('');
}
4

1 回答 1

1

使用模运算

var aPos = 97;
var zPos = 122;
var charsCount = zPos - aPos + 1;
...
if (aPos <= str.charCodeAt(i) && str.charCodeAt(i) <= zPos) { // probably you want && here
  var charNumber = str.charCodeAt(i) - aPos;
  var charNumberEncoded = (charNumber + 4) % charsCount;
  var convertString = String.fromCharCode(aPos + charNumberEncoded);
  var powerString = newString.push(convertString);
}

给常量名称而不是在代码中使用数字被认为是一种很好的做法。这些数字通常被称为幻数,使代码更难阅读。

于 2018-09-27T14:29:27.767 回答