2017-11-09 6 views
-1

私はこれを理解することに近いと思う。Caeser Cipher JavaScript

オブジェクトは "暗号化された"文字列を実際の単語に解読することです。おそらく私のコードはあまりエレガントではありませんが、私はそこに行きますが、charCodeAt()を使って正しいASCIIコードを返すためには、最初に 'str = "SERR PBQR PNZC"'を取得し、必要に応じて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"); 

すべてのヘルプは大歓迎されます。

+0

私はstryArray.split( '');を使用しようとしました。しかしそれはうまくいかなかった。 –

+0

あなたの現在の問題は何ですか? – zerkms

+0

配列内のすべての数字を押してから、その配列を別のループを使って文字列に変換します。 – zerkms

答えて

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"); 
+0

.trim()です。 – stealththeninja