为什么String.charCodeAt(str)不能在这里工作?

时间:2016-02-20 13:29:53

标签: javascript

Str是一个数字。因此String.charCodeAt()应该可以正常工作。我的代码出错了吗?

function rot13(str) { // LBH QVQ VG!
  var tempNums = "";
  for(i = 0; i < str.length; i++) {
      if(str.charCodeAt(i) <= 78 && str.charCodeAt(i) > 64) {
        var tempLocalNum = str.charCodeAt(i) + 13;
        tempNums += tempLocalNum;
      }
      else if(str.charCodeAt(i) > 78 && str.charCodeAt(i) < 91) {
        var tempLocalNumMin = str.charCodeAt(i) - 13;
        tempNums += tempLocalNumMin;
      }
      else {
        tempNums += str.charCodeAt(i);
      }
  }  
  var newStr = String.fromCharCode(tempNums);
  return newStr;
}

rot13(“SERR PBQR PNZC”);

2 个答案:

答案 0 :(得分:0)

不确定这应该是什么,但我在指示的地方做了一些改变。这有用吗:

function rot13(str) { // LBH QVQ VG!
  var tempNums = "";
  for(i = 0; i < str.length; i++) {
      if(str.charCodeAt(i) <= 78 && str.charCodeAt(i) > 64) {
        var tempLocalNum = str.charCodeAt(i) + 13;
        tempNums += String.fromCharCode(tempLocalNum);//here
      }
      else if(str.charCodeAt(i) > 78 && str.charCodeAt(i) < 91) {
        var tempLocalNumMin = str.charCodeAt(i) - 13;
        tempNums += String.fromCharCode(tempLocalNumMin);//here
      }
      else {
        tempNums += String.fromCharCode(str.charCodeAt(i));//here
      }
  }  
  //var newStr = String.fromCharCode(tempNums);//here
  return tempNums;//newStr;//and here
}

答案 1 :(得分:0)

目前尚不清楚你想要实现的目标。

var tempNums = "";会根据您正在执行的操作返回7082696932677968693267917780&amp;做String.fromCharCode(tempNums);不会返回任何结果。

同样var tempNums = 0;将产生952并且String.fromcharCode(tempNums)正在产生θ(Theta)

Here是我在jsfiddle

中尝试过的