Функция шифрования JavaScript позволяет пробелы
После изучения JavaScript в течение 5 дней я написал функцию, которая шифрует только заглавные и строчные буквы.
Проблема заключается в том, что теперь я пытаюсь заставить его работать и для фраз (если пользовательский ввод "Кошки великолепны", ожидаемый вывод - "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));
}
1 ответ
Вам не хватает обработки пробелов. Если вы встретите пробел, вам нужно вернуть его в строку вывода:
Единственные изменения, которые я внес в ваш код выше:
Добавление \s
Вы упомянули:
if (/^[a-zA-Z\s]+$/.test(word)) {
Добавление оператора else
} else if (97 <= character && character <= 122) {
output = output + String.fromCharCode(caesarCiphUpp);
}
else
output = output + String.fromCharCode(character);
Вход: кошки великолепны
Вывод: Джаз Хил Нилха