Проблема с перебором текста (JavaScript)
Код перебирает какой-то текст, затем заменяет каждую букву стоящую правее на три позиций. Проблема в том, что я не знаю как прописать так, чтобы символы сохранялись в переменную someLetter, чтобы образовать текст.
for (let letter of 'text') {
let codeLetter = letter.codePointAt() + 3;
if (codeLetter == 35) {
continue;
}
let someLetter = String.fromCodePoint(codeLetter);
}
Это мой первый проект, прошу принять это во внимание.
Ответы (3 шт):
Т.к. строки можно слаживать в JS, то создадит в начале перед циклом пустую строку (в которую будем записывать значение). И проходясь по каждой букве слова, будем прибавлять к этой строке символ с помощью оператора +=.
const text = 'абвгд';
let someLetter = '';
for (let letter of text) {
let codeLetter = letter.codePointAt() + 3;
if (codeLetter == 35) {
continue;
}
someLetter += String.fromCodePoint(codeLetter);
}
console.log(someLetter);
Это можно записать еще проще:
console.log([...'абвгд'].map(e => {
const cp = e.codePointAt() + 3;
return cp == 35 ? e : String.fromCodePoint(cp);
}).join(''));
P.S. Но если делать шифр Цезаря, то стоит пропускать такие символы, как: пробел, разные знаки и допускать только буквы из алфавита.
Что-то такое ищите?
let text = 'Что-то такое ищите?';
let originalArray = text.split("");
let encriptedArray = originalArray.map(char => char.charCodeAt(0)).map(i => String.fromCharCode(i + 3));
let decriptedArray = encriptedArray.map(char => char.charCodeAt(0)).map(i => String.fromCharCode(i - 3));
console.log(encriptedArray.join(""));
console.log(decriptedArray.join(""));
const getText =(text) => {
return (text.split('') // преобразовать текст на массив букв
.filter(e => !!e) // удалить все пробелы (32 + 3)
.map(e => String.fromCodePoint(e.codePointAt() + 3))) // сместить все символы на 3
.join('') // объединить массив букв в строку
}
console.log(getText('text'))
неужели я один знаю что код пробела 32 :)