2017-10-15 3 views
0

JavaScriptを5日間学習した後、大文字と小文字のみを暗号化する関数を書きました。JavaScript暗号関数の空きスペース

問題は、フレーズでも機能するようにしようとしていることです(ユーザー入力が「Cats are great」、期待される出力が「Jhaz hyl nylha」)。空白は触れないでください。

/^[a-zA-Z]+$//^[a-zA-Z\s]+$/に変更しようとしましたが、動作しませんでした。

PS:はい、これは宿題でしたが、私はまだ学んでいますので、私はまだそれを改善し、より多くのことを学ぶために働いています。

function cipher() { 

    do { 
     word = prompt("write a word"); 

     var output = ""; 

     if (/^[a-zA-Z]+$/.test(word)) { 
      for (var i = 0; i < word.length; i++) { 
       var character = word.charCodeAt(i); 
       var caesarCiphLow = ((character - 65 + 33) % 26 + 65); 
       var caesarCiphUpp = ((character - 97 + 33) % 26 + 97); 
       if (character >= 65 && character <= 90) { 
        output = output + String.fromCharCode(caesarCiphLow); 
       } else if (97 <= character && character <= 122) { 
        output = output + String.fromCharCode(caesarCiphUpp); 
       } 
      } 
      return prompt("Your ciphered text is", output); 
     } else { 
      alert("You must enter a word, without spaces or numbers"); 
     } 
    } while (word === "" || !/^[a-zA-Z]+$/.test(word)); 

} 
+0

ちょうどヘッドアップ:あなたは 'do-while'ループを必要としません。一般的な' while'ループを使うことができ、おそらく動作します。 –

答えて

0

スペースの処理がありません。 あなたはスペースが発生した場合、あなたは出力文字列に戻って、それを配置する必要があります:

私は上記のコードに加えられた変更のみです:

if (/^[a-zA-Z\s]+$/.test(word)) { 
を:

はあなたが言及している\sを追加します

else文を追加

} else if (97 <= character && character <= 122) { 
    output = output + String.fromCharCode(caesarCiphUpp); 
} 
else 
    output = output + String.fromCharCode(character); 

入力:猫は

0123素晴らしいです

出力:Jhaz hyl nylha

関連する問題