Не могу найти ошибку. Со знаками, не являющимися буквами, еще не разбирался.
function rot13(str) {
for (i=0; i<str.length; i++) {
var symbCode = str.charCodeAt(i);
if (symbCode >= 77) {
symbCode -= 13;}
else {
symbCode += 13;}
var symbFromCode = String.fromCharCode(symbCode);
str = str.replace(str[i], symbFromCode);
}
return str;
}
// Change the inputs below to test
rot13("SERR PBQR PNZC");
str = str.replace(str[i], symbFromCode);
Вы же заменяете не символ по конкретному индексу, а первое вхождение. После замены у вас каша произойдет:
SERR -> FERR
FERR -> FRRR
FRRR -> FERR //так как заменится первая R, а не вторая, как вы предполагаете
FERR -> FEER //и т.д.
Лучше формируйте новую строку в отдельной переменной и её возвращайте:
function rot13(str) {
result = '';
for (i=0; i<str.length; i++) {
var symbCode = str.charCodeAt(i);
if (symbCode >= 77) {
symbCode -= 13;}
else {
symbCode += 13;}
var symbFromCode = String.fromCharCode(symbCode);
result = result + symbFromCode;
}
return result;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости