-1

我想我已经接近解决这个问题了。

目标是获取一串“加密”字符并将它们解密为实际单词。也许我的代码现在不是很优雅,我会到达那里,但我可以使用 charCodeAt() 开始'str =“SERR PBQR PNZC”'来返回正确的ASCII码,根据需要加减13,并将其连接到 strArray 中——我知道,它不是一个数组。但是我不能让 strArray 成为一个数组,所以我可以将它传递给 String.fromCharCode(null, strArray); 让它返回正确的解密文本。

我的代码如下:

function rot13(str) { // LBH QVQ VG!

var strArray = '';

//var right = [70, 82, 69, 69, 32, 67, 79, 68, 69, 32, 67, 65, 77, 80];
//used above variable with String.fromCharCode.apply(null, right); and it worked.

for(var i = 0; i < str.length; i++){
 //console.log(str.charCodeAt(i));
  if(str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
    strArray = strArray.concat(str.charCodeAt(i) + 13, ' ');
  } else if(str.charCodeAt(i) >= 78) {
    strArray = strArray.concat(str.charCodeAt(i) - 13, ' ');
  } else {
    strArray = strArray.concat(str.charCodeAt(i), ' ');
  }
 }
 return strArray;
}

// Change the inputs below to test
rot13("SERR PBQR PNZC");

任何帮助将不胜感激。

4

1 回答 1

0

好的,所以,下面返回正确的字符串,保存最后的空格;这不允许我完成挑战。

function rot13(str) { // LBH QVQ VG!

  var strArray = '';

  for(var i = 0; i < str.length; i++){
    //console.log(str.charCodeAt(i));
    if(str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 77) {
      strArray = strArray.concat(str.charCodeAt(i) + 13, ' ');
    } else if(str.charCodeAt(i) >= 78) {
      strArray = strArray.concat(str.charCodeAt(i) - 13, ' ');
    } else {
      strArray = strArray.concat(str.charCodeAt(i), ' ');
    }

  }
  var correct = strArray.split(' ');
  console.log(correct);
  return String.fromCharCode.apply(null, correct);
}

// Change the inputs below to test
rot13("SERR PBQR PNZC");
于 2017-11-09T13:39:01.767 回答