Rot13 Cipher в Javascript: почему одна из моих функций игнорирует все не алфавитные символы, а другая - нет?
Javascript:
function decRot13(str) {
var decode = '';
for(var i = 0; i < str.length; i++){
if(str.charCodeAt(i) + 13 > 90)
//make calculations to reset from 65 to find new charCode value
decode += String.fromCharCode(13 - (90 - str.charCodeAt(i)) + 64);
else if(str.charCodeAt(i) + 13 <= 90 && str.charCodeAt(i) >= 65)
//if value is between 65 and 90 add 13 to charCode value
decode += String.fromCharCode(str.charCodeAt(i) + 13);
else if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 90)
//if value is less than 65 or greater than 90 add same value
decode += String.fromCharCode(str.charCodeAt(i));
}
return decode;
}
function encRot13(str) {
var encode = '';
for(var i = 0; i < str.length; i++){
if(str.charCodeAt(i) - 13 < 65)
encode += String.fromCharCode(90 - (64 - (str.charCodeAt(i) - 13)));
else if(str.charCodeAt(i) - 13 <= 90 && str.charCodeAt(i) >= 65)
encode += String.fromCharCode(str.charCodeAt(i) - 13);
else if(str.charCodeAt(i) < 65 || str.charCodeAt(i) > 90)
encode += String.fromCharCode(str.charCodeAt(i));
}
return encode;
}
alert(encRot13('LMNOP!'));
DecRot13(); Функция производит вывод, который я хочу, расшифровывает шифр и игнорирует специальные символы, такие как пробелы и восклицательные знаки. (По сути ничего неалфавитного).
Я перевернул программу, но по какой-то причине она производит зашифрованные буквы, но изменяет специальные символы (которые я хочу игнорировать).
Как это исправить?